CheckBox cb=(CheckBox)item.Cells[0].Controls[0].FindControl("CB");  
式式

解决方案 »

  1.   

    protected void ItemDataBound_Command(object sender,DataGridItemEventArgs e)                                 //生成CheckBox控件
    {
    if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
    {
    CheckBox cb=new CheckBox();
    cb.ID="CB";
    e.Item.Cells[0].Controls.Add(cb);
    }
    }
    这块没行都有checkbox那ID都是一个吗
      

  2.   

    不使用ItemDataBound事件,使用ItemCreated事件
    把相应的代码转移到ItemCreated事件里面即可ItemDataBound实在绑定时触发,ItemCreated实在创建时触发我估计按钮的Click事件在绑定事件之前触发,所以checkbox控件还没创建起来
    测试成功!!!!
      

  3.   

    TO:楼上的兄弟
    我用了你的方法,当一进入页面时并没有出现CheckBox,只有点击了"删除"按钮后也就是触发回送事件后才会出现CheckBox,
    可不可以一进入页面就出现CheckBox呢
      

  4.   

    renrengqq说的对,至于你最后的问题,只要在Page_Load里执行一次创建CheckBox就行了
    还有item.Cells[0].Controls[0]用的太麻烦用这个吧item.FindControl("CB")搞定
      

  5.   

    To:anmeier(三人行) 
    你说的:==只要在Page_Load里执行一次创建CheckBox就行了怎么操作呢
      

  6.   

    在两个事件里面都放置代码
    我发现ItemDataBound在DataBind时会被触发而每次点击按钮将触发ItemDataCreat事件,而不触发ItemDataBound事件正好满足你的需求
      

  7.   

    private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
    {
    CheckBox cb=new CheckBox();
    cb.ID="CB";
    e.Item.Cells[0].Controls.Add(cb);
    } } private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
         DataGrid1_ItemCreated(sender,e);
    }
    这样写可能就行了