这对我的问题不是一个非常明确的解释,但我不知道如何更好地解释它。
我有一个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)在第一次更新后会发生变化?
提前致谢。
答案 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。