0

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

但是文本框是空的。那么回发时动态控件会丢失吗?如果是,那么如何保留它?如果不是,我哪里错了?

4

2 回答 2

0

您可以在按钮单击方法中分配这样的 GridviewRow:

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

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

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

哪里gridViewRowGridViewRow使用的不是GridView本身。

于 2013-08-20T07:20:29.000 回答
0

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

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

于 2013-08-23T06:59:16.793 回答