2011-10-09 64 views
3

我有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并做一个自定义分页。

意见非常感谢..谢谢!

回答

1

我不确定你想要解决哪个问题。这可能是,我在下拉菜单中,我需要找到ClientId。然后使用克里斯·穆林的答案回答How do I find the Client ID of control within an ASP.NET GridView?

这是使用'<%# ((GridViewRow)Container).FindControl("ddlName").ClientID %>'

如果我需要从,那么你可以通过网格圈在How to get cell value of gridview using JQUERY

+0

我的主要问题是DropDownList的ClientID对于GridView的每一行都不是唯一的。它混淆了基于JavaScript的行,因为最终有25个DropDownList控件具有完全相同的名称。所以,我的问题是,我需要控制每个DDL在呈现给客户端时的命名方式,以便不必更改JavaScript。我可以获得没有问题的值,但是我的主要问题是我似乎无法控制DropDownList的ID。这似乎很奇怪。 – byten

+0

我看了一下你发布的JQuery示例。我会看看这是否能让我得到任何东西。但我畏缩不得不重新构建JavaScript。基本上我只是想要一个解决方案,我可以以某种方式强制我的DropDownList ID是独一无二的...然后所有的都会很好,我不必重新研究js是如何完成的。想要真正避免它。现在,js在每行的onclick事件中内联,并按名称引用其行中的ddl。 – byten

+0

嗯......当我添加'ToolTip ='<%#((GridViewRow)Container).FindControl(“ddlControl”)。ClientID%>''我得到一个唯一的ID。它的形式为'ContentPlaceHolderName_GridViewName_ControlName_RowID' –

0
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) 
    { 
     DropDwonList objDD =(DropDownList)GridView1.Rows[e.RowIndex].FindControl("dropdownid")); 
描述的控制范围之外获得下拉
+0

嗨Diniesh,谢谢你的回复。不幸的是,上述内容不适用于我所要求的。再一次,我不想试图找到控制的名字。我正在设置它,以便每行都有一个唯一的ID。它不允许我动态设置行的ID。 – byten

0

我花了一些时间回到这个问题。而且我不得不说,这个讨论肯定帮助我走上了一条导致答案的道路。在网格视图中提交的JavaScript表单有问题。这个解决方案最终被剥离了JavaScript,并在ImageButton控件上使用CommandName =“”,然后我必须使用Event Handler进行按钮单击事件,然后从EventArgs中的网格视图的行中获取值,以然后调用JavaScript调用的函数。再见Javacript!我从中得知,有时它不会为遗留代码工作。通过这种方式,改变事情以使其适合流程的ASP .Net模型最终变得更好。谢谢大家的回复,帖子,帮助。