虽然是为了解决GridView中的CheckBox操纵问题,但实际上功能并不仅限于GridView中,稍加改动就可以用到其他的场景,甚至都不用改动(不知道有没有这么好糊弄的客户)„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
代码依然帖在下面,比上一篇 用javascript/css实现GridView行背景色交替、点击行变色 长了很多,不过我感觉注释依然足够详细,所以也应该很容易理解,可以把下面两个文件的代码直接复制到你的项目中直接执行。最下面有文件的下载地址,可以直接下载后运行,代码在IE7和Firefox2下测试通过,有任何问题,请在下面留言,我将尽量及时回复。„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        CheckBox.aspx„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        主要包含一个GridView,里面包含了我们要折腾的CheckBox,还有一大~~~~堆的javascript,当然也还是我们折腾的重要手段,只是目标基本已经换成了GridView中的CheckBox,和GridView本身并没有太大关系
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CheckBox.aspx.cs" Inherits="CheckBox" %>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
<html xmlns="http://www.w3.org/1999/xhtml">„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
<head runat="server">„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
    <title>CheckBox</title>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
</head>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
<body>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
    <form id="form1" runat="server">„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        <asp:GridView runat="server" ID="gvMeiMingZi" AutoGenerateColumns="False">„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            <Columns>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                <asp:TemplateField>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                    <ItemTemplate>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                        <input name="chk" type="checkbox" value="<%#Eval("ID")%>" />„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                    </ItemTemplate>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                </asp:TemplateField>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                <asp:BoundField DataField="ID" HeaderText="ID" />„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                <asp:BoundField DataField="Author" HeaderText="Author" />„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                <asp:BoundField DataField="Title" HeaderText="Title" />„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                <asp:BoundField DataField="PostTime" HeaderText="PostTime" />„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                <asp:BoundField DataField="URL" „hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                    DataFormatString="<a href='{0}' target='_blank'>点击打开</a>" „hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                    HeaderText="Link" HtmlEncode="False" />„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            </Columns>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        </asp:GridView>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        <p>已选择的项:<input type="text" size="60" id="checked" /></p>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        <p>要选择的项:<input type="text" size="60" id="checking"/><input type="button" value="选择" /></p>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        <p>当从上面GridView中选择或取消选择一项时,“已选择的项”中会自动更新为当前所有选中项的ID。</p>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        <p>在“要选择的项”里填写要选择的项的ID(ID间用英文逗号分隔),点击“选择”可自动选中要选择的项。</p>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
    </form>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
    <script type="text/javascript">„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        //先获取到所有的checkbox再说„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        var chkList = document.getElementsByName("chk");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        window.onload = function(){„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            //为所有checkbox添加onclick事件处理,以自动更新“已选择的项”„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            for(var i=0; i<chkList.length; i++){„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                chkList.onclick = chkClick;„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            }„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        }„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        //checkbox的onclick事件,用于更新“已选择的项”„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        function chkClick(){„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            var checkedList = "";„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            //获取所有被选中的项„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            for(var i=0; i<chkList.length; i++){„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                if(chkList.checked)„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                    checkedList += chkList.value + ",";„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            }„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            //把选中项的列表显示到“已选择的项”中,substring在这里是为了去除最后一个逗号„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            document.getElementById("checked").value = checkedList.substring(0,checkedList.length-1);„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        }„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        //根据在“要选择的项”中的输入选中相应的项„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        function CheckThem(){„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            var checkingList = document.getElementById("checking").value;„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            //没有输入就直接返回„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            if(checkingList.length==0){return;}„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            //获取所有想要选择项的ID„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            var checkingIds = checkingList.split(",");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            //设置选择状态,注意两个循环的顺序,如果把chkList放到内层,将不能保证总是取得正确结果„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            //因为如果输入了多个ID,后面的ID会把前面的正确结果给冲掉„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            for(var j=0; j<chkList.length; j++){„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                for(var i=0; i<checkingIds.length; i++){„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                    if(checkingIds == chkList[j].value){„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                        chkList[j].checked = true;„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                        break;„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                    }„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                    else{„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                        chkList[j].checked = false;„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                    }„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
                }„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            }„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        }„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
    </script>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
</body>„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
</html>
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        CheckBox.aspx.cs„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        还是用来生成测试数据的,不然前面的GridView里没东西,就没得折腾了
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
using System;„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
using System.Data;„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
public partial class CheckBox:System.Web.UI.Page„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
{„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
    protected void Page_Load(object sender, EventArgs e)„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
    {„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        //生成DataTable并添加相应的列„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        DataTable dt = new DataTable();„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Columns.Add("ID");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Columns.Add("Author");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Columns.Add("Title");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Columns.Add("PostTime");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Columns.Add("URL");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        //测试数据填充„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(1, "丁学", "用javascript/css实现GridView行背景色交替、点击行变色", "*************",„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "**********************************************************************");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(1, "丁学", "突发奇想--有关微软未来", "2008-05-11 09:59",„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2008/05/11/1191936.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(2, "丁学", "可爱的google翻译,笑死我了", "2008-05-11 09:07 ", „hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2008/05/11/1191900.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(3, "丁学", "模板修改后重新发布", "2008-04-26 07:22", „hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2008/04/26/1171778.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(4, "丁学", "想买啥 VS 买了啥!理想与现实的差距咋就这么大咧?", "2008-04-13 07:39",„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2008/04/13/1150952.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(5, "丁学", "XHTML/CSS记忆力大测试,两项都超过我,我请你吃饭!", "2008-04-03 06:40",„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2008/04/03/xhtml_css_test.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(6, "丁学", "Designer VS Coder, who is the winner?", "2008-03-26 07:44", „hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2008/03/26/coder_vs_designer.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(7, "丁学", "用DIV模拟弹出窗口--窗体滚动跟随--丁学", "2007-09-03 08:42", „hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2007/09/03/879654.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(8, "丁学", "一个简单但常用的表格样式--鼠标划过行变色--简洁实现", "2007-08-09 07:12",„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2007/08/09/848555.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(9, "丁学", "关于IE7关闭窗口时总是提示和上传图片前的本地预览解决办法", "2007-06-19 08:50",„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2007/06/19/788449.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(10, "丁学", "IE对input元素onchange事件的支持BUG", "2007-03-23 07:54",„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2007/03/23/684807.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(11, "丁学", "由验证控件引起的IE的超级爆笑BUG", "2007-03-22 07:35", „hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2007/03/22/683401.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(12, "丁学", "DIV中滚动条设置到随机位置(CSS+Javascript)", "2007-03-18 12:17", „hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2007/03/18/678839.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(13, "丁学", "ASP.NET AJAX1.0尝鲜试用:Web Service调用", "2007-03-17 17:36",„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2007/03/17/678383.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        dt.Rows.Add(14, "丁学", "ASP.NET中利用利用Skin引入CSS的问题", "2007-03-17 17:30",„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
            "http://www.cnblogs.com/dingxue/archive/2007/03/17/678374.html");„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        //将DataTable绑定到GridView„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        gvMeiMingZi.DataSource = dt;„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
        gvMeiMingZi.DataBind();„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
    }„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½
}
„hQŸàÕE÷www.netcsharp.cní£ê1½”‡z½