1

这不是对我的问题的非常清楚的解释,但我不知道如何更好地解释它。

我有一个在 PreInit 上动态创建的 gridview。此网格视图在每一行上动态添加了文本框。

每次按下按钮时,我都会在 gridview 单元格内循环并获取文本框的文本 - 并更新数据库。

第一次创建 gridview 时,行 uniqueID 是这样的:ctl03、ctl04、ctl05、ctl06(因此,文本框 ID 是 ctl03$txt0 等。)

第一次按下按钮时,UniqueID 的行还是一样的,这样我就可以通过 FindControl(ID) 方法找到控件,或者使用 Request.Form[txt.UniqueID]

然而; 第一次之后,每当我按下按钮时,都会创建如下所示的 ClientId 行:ctl02、ctl03、ctl04、ctl05 .. 这样我就找不到文本框,也无法捕捉到上面写的文本。

当我查看呈现的 HTML 代码时,我看到 rowClientID 仍然与第一个创建的相同(ctl03、ctl04、ctl05、ctl06)

有谁知道为什么第一次更新后 rowID(命名容器 ID)会发生变化?

提前致谢。

4

1 回答 1

0

一种解决方案是使用静态 ID 创建文本框,而不是让它由 asp.net 动态创建。如果您使用 asp.net ver 4,则可以做到这一点。

其他解决方案是只渲染一个简单的<input name="KnowName01" id="KnowId01" type="text" value="your value here" maxlength="100" etc... >

然后在回发时,您只需用旧方式捕获回报并获得价值。

Request.Form["KnowName01"]

最后,TextBox 只不过是input的渲染,加上一些检查它上面写的内容,包括 Anti-XSS 安全。

于 2011-06-27T15:30:19.783 回答