我在gridview上添加一个模板字段,在该字段放了一个checkbox控件。ID为CheckBox2.该字段的header模板上放了一个checkbox控件。ID为CheckBox1。然后我为CheckBox1写了一个CheckedChanged事件。在该事件写了如下代码:
 System.Web.UI.WebControls.CheckBox chkSelect;
        foreach (System.Web.UI.WebControls.GridViewRow TempRow in GridView1.Rows)
        {
            chkSelect = ((System.Web.UI.WebControls.CheckBox)TempRow.FindControl("CheckBox2"));
            if (chkSelect.Visible)
                chkSelect.Checked = ((System.Web.UI.WebControls.CheckBox)sender).Checked;
        }
程序运行后,却发现这个事件并没有执行。断点跟踪也跟踪不了。而CheckBox1.AutoPostBack已经设置为true了。
我在aspx文件中也有如下代码:
<asp:CheckBox ID="CheckBox1" runat="server" Text="全选" Width="56px" AutoPostBack="True" OnCheckedChanged="CheckBox1_CheckedChanged" />
这表示checkedchanged事件已经注册了。
这到底是怎么回事情?请各位帮忙一起来捉虫。
这是我的qq:17877232  下班时间用
msn:[email protected] 上班时间用
在线等待勇士们一起捉虫。

解决方案 »

  1.   

    提个建议,全选一般都用javascript来实现的
      

  2.   

    //复制粘贴N次的代码,请参考
    <script type="text/javascript">
    var checkFlag = true;
    function ChooseAll()
    {
    if( checkFlag ) // 全选 
    {
    var inputs = document.all.tags("INPUT");
    for (var i=0; i < inputs.length; i++) // 遍历页面上所有的 input 
    {
    if (inputs[i].type == "checkbox" && inputs[i].value != "chkAll" ) {
    inputs[i].checked = true;
    }     
    }
    checkFlag = false;
    }
    else// 取消全选
    {
    var inputs = document.all.tags("INPUT");
    for (var i=0; i < inputs.length; i++) // 遍历页面上所有的 input 
    {
    if (inputs[i].type == "checkbox" && inputs[i].value != "chkAll" 
    {
    inputs[i].checked = false;
    }     
    }  
    checkFlag = true;
    }
    }
    </script>
      

  3.   

    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
            {
                if (e.Row.RowType = DataControlRowType.Header)
                {
                    CheckBox chk = (CheckBox)e.Item.FindControl("CheckBox1");
                    chk.Attributes.Add("onclick", "ChooseAll()");
                }
            }请自己把上面javascript脚本的chkAll改为CheckBox1
      

  4.   

    再更正一次
    javascript:
    <script type="text/javascript">
    var checkFlag = true;
    function ChooseAll()
    {
    if( checkFlag ) // 全选 
    {
    var inputs = document.all.tags("INPUT");
    for (var i=0; i < inputs.length; i++) // 遍历页面上所有的 input 
    {
    if (inputs[i].type == "checkbox" && inputs[i].value != "CheckBox1" )
    {
    inputs[i].checked = true;
    }     
    }
    checkFlag = false;
    }
    else// 取消全选
    {
    var inputs = document.all.tags("INPUT");
    for (var i=0; i < inputs.length; i++) // 遍历页面上所有的 input 
    {
    if (inputs[i].type == "checkbox" && inputs[i].value != "CheckBox1" )
    {
    inputs[i].checked = false;
    }     
    }  
    checkFlag = true;
    }
    }
    </script>//aspx.cs
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.Header)
        {
            CheckBox chk = (CheckBox)e.Row.FindControl("CheckBox1");
            chk.Attributes.Add("onclick", "ChooseAll()");
        }
    }
      

  5.   

    amandag(高歌) :当我将checkbox1做为非模板字段中box来用的时候,问题得到解决。