在datagrid中加了一个checkbox,但这个checkbox不是绑定的,datagrid其它例是绑定的,而这个checkbox初始化时,是通过程序来设定的。在同一个页面上有一button,当单击时,获取checkbox的值。
但我发现如果初始化在Page.Ispostback中的话,则checkbox全为false,在(!page.ispostback)中的话checked却没有任何更改。
求助。

解决方案 »

  1.   

    代码?~~~~~~~在(!page.ispostback)中绑定checkbox肯定是没问题的
      

  2.   

    这是对的啊.
    你要是把所有代码都写在PAGE_LOAD里面,那我也没办法.
    你可以在点击BUTTON后,做个循环来判断是否CHECK.
      

  3.   

    再补充一点。
    我的checkbox不是绑定的,是在第一次进入页面时通过程序初始的。
    当我的button提交时,我的checkbox的状态无法正确保存(我要提交前的状态信息)。
      

  4.   

    参考一下:
    <asp:TemplateColumn HeaderText="选择">
    <HeaderStyle Width="5%"></HeaderStyle>
    <ItemStyle HorizontalAlign="Center" VerticalAlign="Middle"></ItemStyle>
    <HeaderTemplate>
    <FONT face="宋体">选择</FONT>
    </HeaderTemplate>
    <ItemTemplate>
    <asp:CheckBox id="cb_select" runat="server" Width="24px"></asp:CheckBox>
    </ItemTemplate>
    </asp:TemplateColumn>
    后台:
    private void Button1_Click(object sender, System.EventArgs e)
    {
        for(int i = 0; i < this.DataGrid1.Items.Count; i ++)
        {
    if(((CheckBox)this.DataGrid1.Items[i].FindControl ("cb_select")).Checked ==true)
    {
                  [处理代码]
    }
        }
    }
      

  5.   

    1:if (!Page.IsPostBack)
    {
    if (strItemID != null)
    {
    InitPage();
    }
    }2:private void InitPage()
    {
    //patrol item and patrol standard
    dstItem = deviceClassify.GetItemInfor(strItemID);
    dgItem.DataSource = dstItem;
    dgItem.DataBind();
    int nCount = dstItem.Tables[0].Rows.Count;

             //set checkbox
    Item item = new Item();
    dstTaskItem = item.GetItemID(strDeviceID, strTaskID);
    int nTaskItem = dstTaskItem.Tables[0].Rows.Count; if (nTaskItem>nCount || nCount== 0 || nTaskItem==0)
    {
    return;
    } for (int i=0; i<nCount; i++)
    {
    for (int j=0; j<nTaskItem; j++)
    {
    if (dstTaskItem.Tables[0].Rows[j]["ITEMS_ID"].ToString() == dstItem.Tables[0].Rows[i]["ITEMS_ID"].ToString())
    {
    /////////////////////////////////////////////////
                        CheckBox ckBox;
    ckBox = (CheckBox)dgItem.Items[i].FindControl("CheckBox1");
    ckBox.Checked = true;
    ////////////////////////////////////////////////////
    break;
    }
    }
    }
    }3:button event
    private void btSave_Click(object sender, System.EventArgs e)
    {
    .....
    for (int i=0; i<nCount; i++)
    {
    CheckBox ckBox;
    ckBox = (CheckBox)dgItem.Items[i].FindControl("CheckBox1");
    bChecked = ckBox.Checked;
             }
    }
      

  6.   

    如果checkbox初始化时,是通过程序来设定的,你也可以这样
    <ItemTemplate>
         <asp:CheckBox id="cb_select" runat="server" Width="24px"
          Checked='<%# GetStatus(DataBinder.Eval(Container, "DataItem.id").ToString())%>'></asp:CheckBox>
    </ItemTemplate>
    后台:
    protected bool GetStatus(string sender)
    {
         [处理代码]
    }
      

  7.   

    http://goody9807.611.cn/Announce/Announce.asp?BoardID=2&ID=725