我有asp.net页面,其中我使用带有自定义分页的gridView,并且在gridview中有一个DropDownList控件和基于每行控件的javascript,它执行表单提交,并且必须引用与之相关的唯一DropDownList名称这是排。
通常,如果我需要操作控件,我习惯于将“on data data to row”类型的事件用于“FindControl”。但在这种情况下,我不能这样做,因为客户端脚本只会在渲染后引用此控件。
在放置DropDownList的网格视图模板区域中,我尝试输出某种类型的东西:
... ID='<%# Eval("myID") + "_ddl" %>' ...
..就像一个例子,但是编译器/解析器说“Bark,Bark,growl Bark”你不能这样做,因为DopDownList的id不能像这样分配。我还尝试在行数据绑定上分配控件的CLientID,但它也不允许这样做,因为这是一个只写属性。
有没有简单的方法来实际控制ddl名称?我真的想避免改变现在的结构。我不需要找到ddl名称,实际上我需要让每一行中的每个ddl都是唯一的。 onclick实际上来自其行中的另一个控件。不幸的是,JavaScript是内联的。问题是javascript正在寻找具有唯一名称的ddl,并且在网格视图中,ddl的名称都是相同的。我的问题是如何在网格视图中强制ddl的唯一名称ID。可以做到这一点。它不允许我使用上面提到的方法。
这方面的一些背景是,这些数据曾经在没有分页的普通表中。我不得不将它移到gridview中并进行自定义分页。
建议非常感谢。谢谢!
答案 0 :(得分:1)
我不确定你要解决哪个问题。可能是,我在下拉列表中,我需要找到ClientId。然后使用Chris Mullins对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
中所述循环遍历网格答案 1 :(得分:0)
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
DropDwonList objDD =(DropDownList)GridView1.Rows[e.RowIndex].FindControl("dropdownid"));
答案 2 :(得分:0)
我花了一些时间回到这个问题。我不得不说,这次讨论肯定帮助我走上了一条导致答案的道路。网格视图中提交的JavaScript表单存在问题。该解决方案最终剥离了javascript并在ImageButton控件上使用CommandName =“”然后我不得不使用事件处理程序进行按钮单击事件,然后从EventArgs中的网格视图的行中获取值,然后调用JavaScript一直在调用的函数。 Bye Bye Javacript!我从中了解到,有时候处理旧代码并不值得付出代价。通过这种方式,改变事物使其适合ASP .Net模型的流程最终工作得更好。谢谢大家的答案,帖子,帮助。