我有asp.net页面,我正在使用自定义分页的GridView,并且在GridView中有一个DropDownList控件和基于每行控件的JavaScript,它提交表单并且必须参照到与其行相关的唯一DropDownList名称。GridView中的DropDownList的动态名称
通常,如果我需要操纵控件,我习惯于使用“在数据绑定到行”类型的事件“FindControl”。但在这种情况下,我不能这样做,因为客户端脚本在渲染后只会引用此控件。
在网格视图模板区域,其中DropDownList的放置,我试图输出的东西的排序:
... ID='<%# Eval("myID") + "_ddl" %>' ...
..just作为一个例子,但是编译器/语法分析器,所述“树皮,树皮,咆哮树皮“你不能这样做,因为DopDownList的id不能这样分配。我也试图在行数据绑定上分配控件的CLientID,但是它不允许这么做,因为这是一个只写属性。
是否有任何简单的方法来实际控制ddl名称?我真的想避免改变发生的结构。我不需要找到ddl名称,我实际上需要使每行中的每个ddl都是唯一的。 onclick实际上来自其行中的另一个控件。不幸的是JavaScript是内联的。问题是JavaScript正在寻找具有唯一名称的ddl,并且在网格视图中,ddl的名称都是相同的。我的问题是我如何在网格视图中强制ddl的唯一名称ID。这可以做到吗?它不会允许我使用上面提到的方法。
这方面的一些背景是,这个数据曾经在一个没有分页的普通表中。我不得不将它移动到一个gridview并做一个自定义分页。
意见非常感谢..谢谢!
我的主要问题是DropDownList的ClientID对于GridView的每一行都不是唯一的。它混淆了基于JavaScript的行,因为最终有25个DropDownList控件具有完全相同的名称。所以,我的问题是,我需要控制每个DDL在呈现给客户端时的命名方式,以便不必更改JavaScript。我可以获得没有问题的值,但是我的主要问题是我似乎无法控制DropDownList的ID。这似乎很奇怪。 – byten
我看了一下你发布的JQuery示例。我会看看这是否能让我得到任何东西。但我畏缩不得不重新构建JavaScript。基本上我只是想要一个解决方案,我可以以某种方式强制我的DropDownList ID是独一无二的...然后所有的都会很好,我不必重新研究js是如何完成的。想要真正避免它。现在,js在每行的onclick事件中内联,并按名称引用其行中的ddl。 – byten
嗯......当我添加'ToolTip ='<%#((GridViewRow)Container).FindControl(“ddlControl”)。ClientID%>''我得到一个唯一的ID。它的形式为'ContentPlaceHolderName_GridViewName_ControlName_RowID' –