我多次来到这个网站寻求帮助,但这是我的第一篇文章。
我有一个带有gridview的表单,其中有4列,其中一列是dropdownlist列,其值为yes和no。
我希望能够禁用其中一些其他单元格,其中" no"在下拉列表中选择但不知道从哪里开始。
我见过使用带有gridview按钮的row命令的例子,但是在下拉列表中使用它时却找不到很多
修改
我很想知道是否可以使用gridview_rowcommand使用按钮来使用它,所以我添加了一个带有命令名称的按钮的列,称为它并且确实有效,我宁愿使用下拉列表启用/禁用单元格。
答案 0 :(得分:0)
执行此操作的一种方法是处理GridView的SelectedIndexChanged事件,然后“查找”它所在的行,并在此时进行更改。
没有看到你的GridView,很难肯定地说。但是假设DropDownList没有嵌套在任何其他控件中,这应该可以工作:
Sub yourDDL_SelectedIndexChanged(sender As Object, e As EventArgs)
Dim yourDDL As DropDownList = CType(sender, DropDownList)
Dim currentRow As GridViewRow = CType(yourDDL.Parent, GridViewRow)
' Disable the first cell, for example
currentRow.Cells(0).Enabled = False
End Sub
“sender”是您刚刚更改的DropDownList - 位于您要修改的行中! DropDownList的“Parent”是GridViewRow,因此您可以通过控件的.Parent
属性获取对该行的引用,并进行您喜欢的任何更改。
我假设您希望“实时”进行这些更改(每次更改下拉列表的值)。如果这不是你想要的,请告诉我(你的问题并不清楚)。
确保向DropDownList添加标记以处理该事件:
<asp:DropDownList ID="yourDDL" runat="server"
OnSelectedIndexChanged="yourDDL_SelectedIndexChanged" >
答案 1 :(得分:0)
你实际上有几个选择:
Praveen建议的客户端解决方案。您基本上编写了一个脚本,用于订阅GridView
内部下拉列表的更改事件,并在处理程序中禁用该行中所需的所有控件。只需仔细编写jQuery选择器。
编写自己的DropDownList
子类,它能够触发GridView
命令。这基本上只是向控件添加CommandName
,CommandArgument
和CommandSource
属性,并为GridView
定义新模板。查找this article,了解对CheckBox
控件执行的操作。{/ p>
将下拉列表的AutoPostBack
设置为true
并处理后面的代码。这意味着有些工作会弄清楚这个DropDown是什么行。
就个人而言,我会选择第二种解决方案,因为它看起来更清洁,可重复使用。