带有动态gridviewrow的namingContainer ID

时间:2011-06-27 15:05:28

标签: c# asp.net gridview dynamic unique-id

这对我的问题不是一个非常明确的解释,但我不知道如何更好地解释它。

我有一个gridview,我在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)在第一次更新后会发生变化?

提前致谢。

1 个答案:

答案 0 :(得分: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只不过是输入的渲染,还有一些检查写入的内容,包括Anti-XSS safe。