在Grid_RowDataBound
上我在当前行的第8个单元格中添加了一个表。这个表就像:
<table rules="all" border="0" style="width:100%;">
<tbody>
<tr>
<td align="center"><input name="studentgrd$ctl03$ID2VAL4" type="text" value="6" maxlength="2" id="studentgrd_ctl03_ID2VAL4" style="width:20px;"></td>
</tr>
</tbody>
</table>
点击保存按钮,我尝试使用以下方式获取数据:
TextBox tb = (TextBox)studentgrd.FindControl("ID2VAL4");
TextBox tb = (TextBox)studentgrd.Rows[i].Cells[8].FindControl("ID2VAL4");//When looping through all rows
但文本框为空。那么动态控制在回发中丢失了吗?如果是,那么如何保留它?如果不是,我哪里错了?
答案 0 :(得分:0)
您可以在按钮点击方法中指定这样的GridviewRow:
GridViewRow gridViewRow = (GridViewRow)(((Control)sender).NamingContainer);
分配值时,您应将其更改为:
TextBox tb = ((TextBox)gridViewRow .FindControl("ID2VAL4"));
其中gridViewRow
是GridViewRow
,而不是GridView
本身。
答案 1 :(得分:0)
我解决了我的问题:如果它是一个动态生成的控件,并且限制为第一次加载的数据源,那么在回发后你必须再次生成相同的控件并绑定它,然后尝试访问他们。
即使动态控件被创建并绑定到数据源也没有,w它将具有用户给出的更改值(这让我感到惊讶,我认为是因为动态控件的视图状态。如果我错了,请纠正我)。