#vb.net
#vb.net
Вопрос:
Я работаю над проектом WINFORM. Я пытаюсь заставить DataGridView отображаться правильно, но единственный элемент, который отображается, — это заголовки. Я пытался следить за некоторыми интернет-статьями, но я не могу получить данные для отображения в сетке. Я пытаюсь создать 4 столбца. Первый — это столбец с флажком, а остальные предназначены для отображения данных (за вычетом последнего столбца, который должен быть скрытым) Я могу получить данные для отображения, если удалю строку : DataGridView1.AutoGenerateColumns = False
. Что мне нужно, чтобы отобразить данные?
Private Sub GetDataRows(ByVal DateList As String)
Dim SQLConn As New SQLConnector(ConfigurationManager.ConnectionStrings("connection").ToString)
Dim SQLStatement As String = "SELECT [upload_date],[name],[row_id] FROM [dbo].[db_table] WHERE upload_date in (" DateList ")"
Dim dtResults As New DataTable
dtResults = SQLConn.GetDataTableByStatement(SQLStatement) 'Call database and returns a datatable
DataGridView1.AutoGenerateColumns = False
GenerateGridView()
DataGridView1.DataSource = dtResults
End Sub
Private Sub GenerateGridView()
Dim checkColumn As New DataGridViewCheckBoxColumn()
checkColumn.Name = " "
checkColumn.HeaderText = " "
checkColumn.Width = 50
checkColumn.ReadOnly = False
checkColumn.FillWeight = 10
DataGridView1.Columns.Add(checkColumn)
Dim gridCol1 As New DataGridViewColumn
gridCol1.Name = "upload_date"
gridCol1.HeaderText = "Upload Date"
gridCol1.DataPropertyName = "upload_date"
gridCol1.Width = 50
gridCol1.ReadOnly = True
DataGridView1.Columns.Add(gridCol1)
Dim gridCol2 As New DataGridViewColumn
gridCol2.Name = "hospital_name"
gridCol2.HeaderText = "Hospital Name"
gridCol2.DataPropertyName = "hospital_name"
gridCol2.Width = 50
gridCol2.ReadOnly = True
DataGridView1.Columns.Add(gridCol2)
Dim gridCol3 As New DataGridViewColumn
gridCol3.Name = "row_id"
gridCol3.HeaderText = "Row ID"
gridCol3.DataPropertyName = "row_id"
gridCol3.Width = 50
gridCol3.ReadOnly = True
gridCol3.Visible = False
DataGridView1.Columns.Add(gridCol3)
End Sub
Комментарии:
1. Если вы не хотите, чтобы сетка автоматически генерировала столбцы, избавьтесь от этого метода и создайте их в конструкторе. Я предполагаю, что ваша конкретная проблема заключается в том, что вы создаете
DataGridViewColumn
объекты вместоDataGridViewTextBoxColumn
объектов.2. Зачем вам использовать
New
ключевое слово inDim dtResults As New DataTable
, если вы просто собираетесь присвоить что-то еще той же переменной в следующей строке? Почему бы вам просто не использовать одну строку:Dim dtResults As DataTable = SQLConn.GetDataTableByStatement(SQLStatement)
?
Ответ №1:
Автоматически генерируемый столбец имеет значение false, возможно, это создает проблему. Почему бы вам не попробовать это в дизайне формы. Выполните следующие действия: дизайн формы -> Источник данных -> Выберите источник данных -> выберите таблицу, которую вы хотите отобразить в таблице данных -> нажмите на нее -> вы найдете опцию просмотра сетки -> нажмите на нее -> затем перетащите таблицу в свою форму. вам также не нужно устанавливать источник данных. но если вы хотите скрыть какой-либо столбец, вам нужно сделать это вручную. надеюсь, это сработает.