2015-12-29 5 views
0

Я пытаюсь использовать combobox в datagrid, и все в порядке. Но когда во время выполнения выпадающий список, кажется, не содержит никаких данных, это мой код:Datagridview Комбинированные элементы пустые

Dim cbtn As New DataGridViewComboBoxColumn 
    Dim ls As New DataTable 
    cbtn.Name = "Schedule" 
    ls.Columns.Add("Day") 
    ls.Rows.Add("Monday") 
    ls.Rows.Add("Tuesday") 
    ls.Rows.Add("Wednesday") 
    ls.Rows.Add("Thursday") 
    ls.Rows.Add("Friday") 
    ls.Rows.Add("Saterday") 
    cbtn.DataSource = ls 
    cbtn.DisplayMember = "Day" 
    DoctorDataView.Columns.Add(cbtn) 
    cbtn.Width = DoctorDataView.Columns(DoctorDataView.Columns.Count - 1).Width/2 

Я попробовал список вместо таблицы данных, и даже добавление элементов непосредственно не дает никакого результата! Любая помощь? (Код C# или VB в порядке)

+0

Ваш код кажется ОК. Вероятно, вы добавляете столбец к другому 'DataGridView', который вы видите. Например, у вас может возникнуть проблема с ссылкой на форму (изменение другой формы, чем та, которую вы должны изменить) –

+0

@RezaAghaei Нет, я вижу комбобокс в DataGridView под названием «DoctorDataView», но как только я нажимаю на него, список не отображается и похоже, что поле со списком пустое от данных! –

+0

Каждая вещь с этим кодом в порядке. Проблема в другом месте. Вы должны создать простую форму, содержащую «DataGridView», и протестировать ее самостоятельно, и вы увидите, что с этим фрагментом кода нет проблем. –

ответ

0

Данные DataGridView не отображаются в таблице данных без значения. в приведенном ниже примере первая строка имеет допустимое значение, так же как и третья строка. Вторая строка прекрасна, но не показывает значения, в то время как последняя строка имеет недопустимые данные, поэтому нам нужно использовать утверждение здесь.

Примечание. Я использовал DayNames, чтобы указать названия дней недели, в которых я обычно использую собственное пространство имен, как в this code example.

Любые способы надеяться, что это поможет.

Imports System.Globalization 
Public Class Form1 
    ''' <summary> 
    ''' One column added in the designer 
    ''' Form load I add a ComboBox with weekday names for data source 
    ''' </summary> 
    ''' <param name="sender"></param> 
    ''' <param name="e"></param> 
    ''' <remarks></remarks> 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

     DataGridView1.Columns.Add(
      New DataGridViewComboBoxColumn With 
      { 
       .DataSource = CultureInfo.CurrentCulture.DateTimeFormat.DayNames, 
       .DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing, 
       .Name = "DayColumn", 
       .HeaderText = "Week day", 
       .SortMode = DataGridViewColumnSortMode.NotSortable 
      } 
     ) 

     DataGridView1.Rows.Add(New Object() {"AAA", "Friday"}) 
     DataGridView1.Rows.Add(New Object() {"BBB"}) 
     DataGridView1.Rows.Add(New Object() {"CCC", "Monday"}) 
     DataGridView1.Rows.Add(New Object() {"DDD", "XYZ"}) 
    End Sub 

    Private Sub DataGridView1_DataError(
     sender As Object, 
     e As DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError 

     If e.Exception.Message = "DataGridViewComboBoxCell value is not valid." Then 
      Console.WriteLine("Not valid week name [{0}]", DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).Value) 
      e.Cancel = True 
     End If 

    End Sub 
End Class 
Смежные вопросы