C# 具有动态gridviewrow的namingContainer ID

C# 具有动态gridviewrow的namingContainer ID,c#,asp.net,gridview,dynamic,unique-id,C#,Asp.net,Gridview,Dynamic,Unique Id,这不能很清楚地解释我的问题,但我不知道如何更好地解释它 我有一个在PreInit上动态创建的gridview。此gridview在每行上动态添加了文本框 每次按下按钮,我都会在gridview单元格中循环,获取文本框的文本,并更新数据库 第一次创建gridview时,行uniqueID如下所示: ctl03、ctl04、ctl05、ctl06因此,文本框ID为ctl03$txt0等 第一次按下按钮时,行UniqueID仍然相同,因此我可以通过FindControlID方法或使用Request.F

这不能很清楚地解释我的问题,但我不知道如何更好地解释它

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

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

第一次创建gridview时,行uniqueID如下所示: ctl03、ctl04、ctl05、ctl06因此,文本框ID为ctl03$txt0等

第一次按下按钮时,行UniqueID仍然相同,因此我可以通过FindControlID方法或使用Request.Form[txt.UniqueID]查找控件

但是,;在第一次之后,每当我按下按钮时,都会创建行ClientId,如下所示:ctl02、ctl03、ctl04、ctl05。。所以我找不到文本框,也抓不到写在上面的文本

当我查看呈现的HTML代码时,我看到rowClientID与最初创建的ctl03、ctl04、ctl05、ctl06仍然相同

有人知道为什么rowIDs命名容器id在第一次更新后会发生变化吗


提前感谢。

一个解决方案是使用静态ID创建文本框,而不是通过asp.net动态创建。如果使用asp.net版本4,则可以完成此操作

另一种解决方案是只渲染一个简单的

然后,在回邮时,您只需用旧方法获取回报并获得价值

Request.Form["KnowName01"]

最后,文本框只不过是输入的一个呈现,再加上一些对输入内容的检查,包括反XSS安全检查。

如果我错了,请纠正我,但它不是我们发送到请求的唯一ID。表单作为密钥?我将ID分配给文本框,比如txt0,但在呈现时,asp.net会添加前缀,使我的初始ID类似于“ctl00$CntntPlcHld$ctl02$txt0”。问题出现在这里:我得到了初始rowID=ctl03,但在按下第二个或第三个-update按钮后,rowID变成了ctl02。有趣的是,它仍然是html代码上的ctl03。由于codebehind和HTML呈现代码上的两个rowID不匹配,我为textbox获取了一个错误的UniqueID,无法捕获其中的文本。@louip yes UniqueID是表单上的,这是呈现标记上的名称。