我在DataGrid里放了一个CheckBox,代码如下面:
---------------------------------------------------------------
<asp:TemplateColumn>
<ItemStyle Width="41px" CssClass="DataGridCell"></ItemStyle>
<ItemTemplate>
<asp:CheckBox id="chkContractId" Runat="server"></asp:CheckBox>
</ItemTemplate>
</asp:TemplateColumn>现在我要把DataGrid中每个CheckBox的值都取出来,代码如下:
---------------------------------------------------------------
string strArrContractId = "";
for(int i=0;i< this.DataGrid1.Items.Count - 1;i++)
{
CheckBox chkContractID = new CheckBox();
chkContractID = (CheckBox) this.DataGrid1.Items[i].Cells[0].FindControl("chkContractId");

TextBox txtContractId = new TextBox();
txtContractId = (TextBox) this.DataGrid1.Items[i].Cells[9].FindControl("txtContractId");

string strContractId = txtContractId.Text.ToString(); if( chkContractID.Checked)
{
strArrContractId += strContractId + "~"; }
问题:通过这种方式,
chkContractID = (CheckBox) this.DataGrid1.Items[i].Cells[0].FindControl("chkContractId");
调试找不到这个控件,取不出CheckBox的值,请大家帮帮忙!谢谢,如何解决这个问题。

解决方案 »

  1.   

    <asp:CheckBox id="chkContractId" Runat="server"></asp:CheckBox>
    -----------------------
    <input type="checkbox" id="chkContractId" name="chkContractId">然后Request["chkContractId"]就行
      

  2.   

    动态添加的控件在后台不保留状态。但form中的数据会post到后台。楼上的方法应该可以。
      

  3.   

    看你写在什么事件里面了。EditCommand或者UpdataCommand?
      

  4.   

    CheckBox chkContractID = new CheckBox();
    chkContractID = (CheckBox) this.DataGrid1.Items[i].Cells[0].FindControl("chkContractId");该为CheckBox chkContractID ;
    chkContractID = (CheckBox) this.DataGrid1.Items[i].Cells[这里改为你的列位置].FindControl("chkContractId");
    这里改为你的列位置:如第7列即为Cells[6],以此类推