Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GridView中DropDownList的动态名称_C#_Asp.net - Fatal编程技术网

C# GridView中DropDownList的动态名称

C# GridView中DropDownList的动态名称,c#,asp.net,C#,Asp.net,我有一个asp.net页面,其中我使用的是带有自定义分页的gridView,在gridView中有一个DropDownList控件和基于每行控件的javascript,它执行表单提交,并且必须引用与其行相关的唯一DropDownList名称 通常,如果我需要操作控件,我已经习惯于使用“on databinding to row”类型的事件来操作“FindControl”。但在这种情况下,我不能这样做,因为客户端脚本仅在呈现该控件后才会引用它 在放置DropDownList的grid view模板

我有一个asp.net页面,其中我使用的是带有自定义分页的gridView,在gridView中有一个DropDownList控件和基于每行控件的javascript,它执行表单提交,并且必须引用与其行相关的唯一DropDownList名称

通常,如果我需要操作控件,我已经习惯于使用“on databinding to row”类型的事件来操作“FindControl”。但在这种情况下,我不能这样做,因为客户端脚本仅在呈现该控件后才会引用它

在放置DropDownList的grid view模板区域中,我尝试输出以下内容:

... ID='<%# Eval("myID") + "_ddl" %>' ...
。。。ID=“”。。。
…举个例子,但是编译器/解析器说“汪汪汪汪”你不能这样做,因为DopDownList的id不能这样分配。我还尝试在行数据绑定上分配控件的CLientID,但它也不允许这样做,因为这是一个只写属性

有什么简单的方法可以实际控制ddl名称吗?我真的想避免改变正在发生的事情的结构。我不需要找到ddl名称,我实际上需要使每行中的每个ddl都是唯一的。onclick实际上来自其所在行的另一个控件。不幸的是,JavaScript是内联的。问题是javascript正在寻找具有唯一名称的ddl,而在网格视图中,ddl的名称都是相同的。我的问题是如何在网格视图中强制ddl使用唯一的名称ID。这是可以做到的。它不允许我使用上面提到的方法

这方面的一些背景是,这些数据过去是在一个没有分页的普通表中。我不得不将它移动到gridview中并进行自定义分页


非常感谢您的建议……谢谢

我不确定你想解决哪个问题。可能是,我在下拉列表中,我需要找到客户ID。然后使用Chris Mullins的答案中的答案

哪个是使用
'


如果我需要从控件外部获取下拉列表,那么您可以按照

中所述在网格中循环。我花了一些时间才回到这个问题。我必须说,这次讨论确实帮助我找到了答案。网格视图中的JavaScript表单提交有问题。解决方案最终是剥离javascript并在ImageButton控件上使用CommandName=“”,然后我必须使用button click事件的事件处理程序,然后从EventArgs中的网格视图行中获取值,然后调用javascript一直在调用的函数。再见Javascript!我从中了解到,有时候处理遗留代码是不划算的。通过这种方式,修改内容以使其适合ASP.Net流模型,最终效果会更好。谢谢大家的回答、帖子和帮助

我的主要问题是DropDownList的ClientID对于GridView的每一行都不是唯一的。这会混淆基于行的JavaScript,因为最终会出现25个名称完全相同的DropDownList控件。因此,我的问题是,我需要控制每个DDL在呈现给客户端时如何命名,以便不必更改JavaScript。我可以获得没有问题的值,但我的主要问题是我似乎无法控制DropDownList的ID。这看起来很奇怪。我看了一下您发布的JQuery示例。我会看看这能不能帮我做点什么。但我对不得不重新构造javascript感到畏缩。基本上,我只是想要一个解决方案,在这个解决方案中,我可以以某种方式强制我的DropDownList ID是唯一的……然后一切都会好起来,我不需要重新处理js是如何完成的。我真的想避免它。现在js在一个onclick事件中内联,用于每个箭头,并按名称引用其行中的ddl。。。当我添加
ToolTip=''
时,我会得到一个唯一的ID。它的形式是
ContentPlaceHolderName\u gridview name\u ControlName\u RowID
唯一的问题是js调用document.getelementbyid(“[dropdownlistnamethatisunique”)。因此,设置工具提示不起作用。我需要实际的ddl来向浏览器呈现唯一的名称。现在这是我的问题。基本上,GridView中的所有ddl在每一行中都是相同的名称,我不允许在ddl ID参数中运行eval语句。问题是,如何向客户端呈现他输入了ddl ID字段,这样js仍然可以使用document.getelementbyid。我想你可能了解了一些事情。我必须在考虑了你所说的之后回来。你的意思是,如果我设置了工具提示,那么我可能可以将我的js document.getelementbyid改为可以访问js中工具提示的内容。我会的请尝试并报告…它可能会起作用…您好,Diniesh,谢谢您的回复。不幸的是,上述内容与我的要求不符。同样,我没有试图找到控件的名称。我正在尝试对其进行设置,使其每行具有唯一的id。它不允许我动态设置该行的id。
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        DropDwonList objDD =(DropDownList)GridView1.Rows[e.RowIndex].FindControl("dropdownid"));