Gridview下拉列表

时间:2014-04-16 13:51:08

标签: asp.net vb.net gridview

我多次来到这个网站寻求帮助,但这是我的第一篇文章。

我有一个带有gridview的表单,其中有4列,其中一列是dropdownlist列,其值为yes和no。

我希望能够禁用其中一些其他单元格,其中" no"在下拉列表中选择但不知道从哪里开始。

我见过使用带有gridview按钮的row命令的例子,但是在下拉列表中使用它时却找不到很多

修改

我很想知道是否可以使用gridview_rowcommand使用按钮来使用它,所以我添加了一个带有命令名称的按钮的列,称为它并且确实有效,我宁愿使用下拉列表启用/禁用单元格。

2 个答案:

答案 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)

你实际上有几个选择:

  1. Praveen建议的客户端解决方案。您基本上编写了一个脚本,用于订阅GridView内部下拉列表的更改事件,并在处理程序中禁用该行中所需的所有控件。只需仔细编写jQuery选择器。

  2. 编写自己的DropDownList子类,它能够触发GridView命令。这基本上只是向控件添加CommandNameCommandArgumentCommandSource属性,并为GridView定义新模板。查找this article,了解对CheckBox控件执行的操作。{/ p>

  3. 将下拉列表的AutoPostBack设置为true并处理后面的代码。这意味着有些工作会弄清楚这个DropDown是什么行。

  4. 就个人而言,我会选择第二种解决方案,因为它看起来更清洁,可重复使用。