DataGrid2的绑定是在另一个Button的Click事件中的

解决方案 »

  1.   

    要搞清楚这个问题 首先要明白 DataGrid2_ItemDataBound()是啥时候触发的。
    DataGrid2_ItemDataBound只有在 datagird2执行databind事件的时候才被调用。
    而databind事件 一般只在 第一次get的时候才做,post的时候是不做的。checkbox打勾是一次post操作,那么这时DataGrid2_ItemDataBound是不执行的
    既然这样 dw.CheckedChanged += new System.EventHandler(this.chkContainerNum_CheckedChanged);
    也没有执行,也就是说 你个checkbox打勾,可是checkbox却没有事件,当然不会变化咯 建议看看sdk里面 控件的执行周期和 事件模型
    另外 别忘了给分我。
      

  2.   

    问题解决拉直接事件绑定到页面上就可以拉<asp:CheckBox id="chkContainerNum" runat="server" ForeColor="Transparent" BackColor="Transparent"BorderColor="Transparent" AutoPostBack="True" OnCheckedChanged="chkContainerNum_CheckedChanged"></asp:CheckBox>
    正如fumade(海盗)所说在函数DataGrid2_ItemCreated写注册事件是不对的,不过函数chkContainerNum_CheckedChanged作了一些修改如下:protected void chkContainerNum_CheckedChanged(object sender, System.EventArgs e)
    {
    for(int i=0;i<this.DataGrid2.Items.Count;i++) 
    {
    if(((CheckBox)DataGrid2.Items[i].FindControl("chkContainerNum")).Checked == true)
    {
    ((TextBox)(DataGrid2.Items[i].FindControl("TB"))).Enabled  = true ;
    ((TextBox)(DataGrid2.Items[i].FindControl("TB"))).BackColor  = Color.Transparent;
    }
    if(((CheckBox)DataGrid2.Items[i].FindControl("chkContainerNum")).Checked == false)
    {
    ((TextBox)(DataGrid2.Items[i].FindControl("TB"))).Enabled  = false ;
    ((TextBox)(DataGrid2.Items[i].FindControl("TB"))).Text = null;
    ((TextBox)(DataGrid2.Items[i].FindControl("TB"))).BackColor  = Color.WhiteSmoke;
    }  
    }
    }