2013-04-10 67 views
0

特定的GridView列使用Visual Studio和VB.net我有一个gridview填充数据,并基于在下拉菜单文本值我想隐藏某些列并酌情取消隐藏。VB.Net隐藏基于下拉文本选择

下拉通过SQL填充的对象列表(英语,数学科学等)

该网格包含列包括三列KS2英语,数学KS2和KS2平均。

当英语从下拉拿起我想隐藏的KS2数学和KS2平均列。

当数学是挑我想隐藏的KS2英语和KS2平均列。

最后,如果选择了其他问题,我想隐藏的KS2英语和数学KS2列。

我已经填充了gridview确定的数据,根据下拉列表中的主题进行更新,但我不确定需要做什么才能开始获取有关基于选择显示的列的具体信息。

这里是一个屏幕快照,应该让我至今清楚什么:

enter image description here

回答

1

试试这个代码:

它用于加处理

使用
Private Sub DataGridView1_EditingControlShowing(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing 

     If TypeOf e.Control Is ComboBox Then 

      AddHandler CType(e.Control, ComboBox).SelectedIndexChanged, AddressOf LastColumnComboSelectionChanged 

     End If 

    End Sub 

其对于上可见的伪列

Private Sub LastColumnComboSelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) 

    DataGridView1.Columns(5).Visible = True 
    DataGridView1.Columns(4).Visible = True 
    DataGridView1.Columns(3).Visible = True 

    If sender.SelectedItem = "Maths" Then 
     DataGridView1.Columns(2).Visible = False 
     DataGridView1.Columns(4).Visible = False 
    ElseIf sender.SelectedItem = "English" Then 
     DataGridView1.Columns(3).Visible = False 
     DataGridView1.Columns(4).Visible = False 
    ElseIf sender.SelectedItem = "others" Then 
     DataGridView1.Columns(3).Visible = False 
     DataGridView1.Columns(4).Visible = False 
     DataGridView1.Columns(2).Visible = False 
    End If 

    End Sub 
+0

感谢这么远。我已经在我的项目中实现这一点,并在为GridView,下拉菜单和列位置适当的控制所取代,但我得到的错误告知该类型'System.Windows.Forms.DataGridViewEditingControlShowingEventArgs'和'ComboBox'没有定义。 – Matt 2013-04-10 13:11:52

+0

您是否在您的datagridview中添加了datagridviewcomboxcolumn。而你正在winforms或web – Sathish 2013-04-10 13:16:47

+0

谢谢@SATSON。我添加了一个截图,希望能让事情更清楚。 我在webform中有一个单独的下拉列表和gridview控件。 – Matt 2013-04-10 13:44:28

1

我整理了它。写在页面加载以下步骤:

Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load 
    GvStudentDetails.Columns(17).Visible = False 
    GvStudentDetails.Columns(18).Visible = False 
End Sub 

我的下拉列表中选择过程中的以下选择case语句:

Protected Sub DdlSubject_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlSubject.SelectedIndexChanged 
    Select Case strSubject 
     Case "English" 
      GvStudentDetails.Columns(16).Visible = True 
      GvStudentDetails.Columns(17).Visible = False 
      GvStudentDetails.Columns(18).Visible = False 
     Case "Mathematics" 
      GvStudentDetails.Columns(16).Visible = False 
      GvStudentDetails.Columns(17).Visible = True 
      GvStudentDetails.Columns(18).Visible = False 
     Case Else 
      GvStudentDetails.Columns(16).Visible = False 
      GvStudentDetails.Columns(17).Visible = False 
      GvStudentDetails.Columns(18).Visible = True 
    End Select 
End Sub