首先在Page_Load中
if(!IsPostBack)
  绑定DataGrid然后:
private void gridRightList_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
int iIndex = e.Item.ItemIndex;
if(iIndex > -1)
{
for(int i = 1 ; i < e.Item.Cells.Count ; i++)
{
CheckBox chk = new CheckBox();
chk.ID     = "chk" + iIndex + "_" + i;
e.Item.Cells[i].Controls.Add(chk);
}
}
}

解决方案 »

  1.   

    那为什么在设计时摆一个CheckBox到页面上,提交后还能看到?
      

  2.   

    因为是在dg中,把Dg的绑定代码写在IsPostBack里就行了
      

  3.   

    提交后看不到
    是因为,你的checkBox是动态生成的
    提交后,属于PostBack
    正好被你的(!IsPostBack)否决了
    因此,没有执行checkbox动态生成
    当然也就找不到
    checkbox了你的属性变成什么样了
    所有CheckBox空间的ID属性都变了
      

  4.   

    不管是IsPostBack或是!IsPostBack,你都要绑定你的DataGrid
      

  5.   

    不管是不是PostBack
    在page_load中都要动态生成一次CheckBox
      

  6.   

    1. in Page_Load
    if (!Page.IsPostBack)
    {
      //绑定DataGrid
    }2. 在ItemCreated事件和ItemDataBound事件中,都要添加CheckBox控件,代码必须相同。
    原因:在执行DataBound()方法的时候,DataGrid会激发ItemDataBound事件来处理绑定内容,这时候会取消ItemCreated里建立的控件。在页面返回的时候,页面会执行ItemCreated事件,重新建立CheckBox。所以,ItemDataBound中的代码是为DataBind()方法使用的,ItemCreated中的代码是在页面方法的时候使用的。
    这样添加的控件在页面刷新后仍然可以保存控件状态。
      

  7.   

    可以在页面的DataGrid中放置你的CheckBox,然后控制它的visible
    这样就不用每次都判断重新生成了我做过的代码如下:
       实现的是,如果数据库里netAccountInTime字段为空,就显示CheckBox;否则,就用lable显示其值
    <asp:TemplateColumn HeaderText="录入">
    <ItemTemplate>
    <asp:Label id=netAccountIn_label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"netAccountInTime") %>'></asp:Label>
    <asp:CheckBox id=netAccountIn_check Runat="server" Visible='<%# (bool)(DataBinder.Eval(Container, "DataItem.netAccountInTime") == System.DBNull.Value) %>'></asp:CheckBox>
    </ItemTemplate>
    </asp:TemplateColumn>
      

  8.   

    to icyer() :
      但是如果像你所说的那样,在在ItemCreated事件和ItemDataBound事件中,都要添加CheckBox控件,代码相同。虽然可以保证页面上的CheckBox控件不丢失,但是这两次事件之间的用户对该控件的操作就保存不下来了。
      比如说我在页面上选中该CheckBox后提交,页面上实际上是又重新生成了一次CheckBox,但是用户的选中值就丢失了呀
      有什么方法可以使这些动态生成的控件状态完全重现呢?
      

  9.   

    每次Page_Load中不论是否postback都要动态生成CheckBox
    每个CheckBox都要取唯一ID
    若CheckBox不是第一次生成
    只要取上次的同一ID,
    Page类会自动加载上次数据
      

  10.   

    如何在提交以后取到动态生成的checkbox的选中值?http://expert.csdn.net/Expert/topic/1618/1618594.xml?temp=.765774