从gridview中的动态控件访问数据

时间:2013-08-20 07:14:15

标签: asp.net gridview dynamic-data

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

但文本框为空。那么动态控制在回发中丢失了吗?如果是,那么如何保留它?如果不是,我哪里错了?

2 个答案:

答案 0 :(得分:0)

您可以在按钮点击方法中指定这样的GridviewRow:

GridViewRow gridViewRow = (GridViewRow)(((Control)sender).NamingContainer);

分配值时,您应将其更改为:

TextBox tb = ((TextBox)gridViewRow .FindControl("ID2VAL4"));

其中gridViewRowGridViewRow,而不是GridView本身。

答案 1 :(得分:0)

我解决了我的问题:如果它是一个动态生成的控件,并且限制为第一次加载的数据源,那么在回发后你必须再次生成相同的控件并绑定它,然后尝试访问他们。

即使动态控件被创建并绑定到数据源也没有,w它将具有用户给出的更改值(这让我感到惊讶,我认为是因为动态控件的视图状态。如果我错了,请纠正我)。