2013-04-10 2 views
0

Использование Visual Studio и VB.net У меня есть gridview, заполненный данными и основанный на текстовых значениях в раскрывающемся списке. Я хотел бы скрыть определенные столбцы и отобразить в соответствующих случаях.VB.Net скрыть конкретные столбцы gridview на основе выбора выпадающего текста

Раскрывающийся заполняется с помощью SQL с перечнем предметов (английский язык, математика Наука и т.д ..)

Сетка содержит столбцы, включая три колонки KS2 английский, KS2 математику и KS2 Средняя.

Когда в раскрывающемся списке выбрано английское, я хотел бы скрыть столбцы KS2 Maths и KS2 Average.

Когда выбрана Maths, я хотел бы скрыть колонки KS2 English и KS2 Average.

И наконец, если какой-либо другой объект выбран, я бы хотел скрыть столбцы KS2 English и KS2 Maths.

Я уже заполнял gridview ok с данными, которые обновляются на основе темы в раскрывающемся списке, но я не уверен, что мне нужно сделать, чтобы начать получать конкретные данные о том, какие столбцы отображаются на основе выбора.

Вот скриншот, который должен дать понять, что я до сих пор:

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, dropdown и позиций столбца, но я получаю ошибки, сообщая, что типы 'System.Windows.Forms.DataGridViewEditingControlShowingEventArgs' и' ComboBox' не определены. – Matt

+0

Вы добавляете datagridviewcomboxcolumn в свой datagridview. И вы wroking в winforms или сети – Sathish

+0

Спасибо @SATSON. Я добавил скриншот, который, надеюсь, сделает все более ясным. У меня есть отдельный раскрывающийся список и элемент управления gridview в веб-форме. – Matt

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 

И следующий оператор выбора случая в пределах моего ниспадающего выбора процедуры:

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 
Смежные вопросы