2015-05-08 4 views
1

Я хочу загрузить таблицу базы данных в datagridview, чтобы я мог редактировать и обновлять столбец, теперь я использую представление списка, но я хочу использовать gartagridview, потому что его более легко редактировать данные в нем.показать базу данных в datagridview без заголовка

Я использую этот код для отображения данных в базе данных в виде списка:

Public Sub showlistview() 
    Try 
     Dim dt As New DataTable 
     Dim ds As New DataSet 
     ds.Tables.Add(dt) 
     Dim da As New OleDbDataAdapter("select * from pay_pretalk where cust_id=" & pretalk_pay.TextBox4.Text & " order by sdate DESC ", con) 
     da.Fill(dt) 
     Dim myrow As DataRow 
     For Each myrow In dt.Rows 
      ListView1.Items.Add(myrow.Item(0)) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(2)) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(3)) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(4)) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(5)) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(6)) 
      ListView1.Items(ListView1.Items.Count - 1).SubItems.Add(myrow.Item(7)) 
     Next 
    Catch ex As Exception 
     MsgBox(ex.Message) 
    End Try 
End Sub 

как я могу сделать то же самое в DataGridView, не показывая заголовок базы данных и использовать свой собственный заголовок в свойствах DataGridView ,

, если я использую этот код для отображения данных в DataGridView:

 Dim dt As New DataTable 
     Dim ds As New DataSet 
     ds.Tables.Add(dt) 
     Dim da As New OleDbDataAdapter("select * from pay_pretalk where cust_id=" & pretalk_pay.TextBox4.Text & " order by sdate DESC ", con) 
     da.Fill(dt) 
     DataGridView1.DataSource = dt 

это шоу все таблицы с заголовком, но я уже добавить пользовательский заголовок, так что пропустить все, :(

+0

ли вы имеете в виду, не показывая имена столбцов в заголовке каждого столбца DataGridView? – Steve

+0

yes @Steve Я хочу добавить только записи из базы данных, я хочу, чтобы столбец заголовка был в именах отложенных. –

ответ

2

После установки свойства DataGridView.DataSource с DataTable извлекаться вы могли бы начать простой цикл, который изменяет столбцы заголовка текста с вашими предпочтениями

..... 
dt.Columns.RemoveAt(1) 
dataGridView1.DataSource = dt 

for each cl As DataGridViewColumn in dataGridView1.Columns 
    Select Case cl.HeaderText 
     Case "FirstColumnName": 
      cl.HeaderText="MyColumn1Name" 
     Case "SecondColumnName": 
      cl.HeaderText="MyColumn2Name" 
     case "ThirdColumnName": 
      cl.HeaderText="MyColumn3Name" 

     ... and so on for the other columns .... 
    End Select 
Next 
+0

есть способ добавить данные в виде сетки, например, в виде списка? –

+0

Вы имеете в виду без указания колонки в индексе 1? Да просто вызовите dt.Columns.RemoveAt (1), прежде чем привязывать таблицу к вашей сетке – Steve

+0

просто то, что у меня есть представление сетки данных с заголовком, я добавляю из свойств , что я хочу просто получить данные из базы данных и добавить их в datagridview –

1

вы можете s et to false свойство datagridview auto generate columns и использовать свойство data property name каждого столбца для сопоставления его столбцу источника данных.

Пример кода:

DataGridView1.AutoGenerateColumns = False 
Dim index As Integer 
index = DataGridView1.Columns.Add("ColumnA", "ColumnA") 
DataGridView1.Columns(index).DataPropertyName = "Column1" 
index = DataGridView1.Columns.Add("ColumnB", "ColumnB") 
DataGridView1.Columns(index).DataPropertyName = "Column2" 
index = DataGridView1.Columns.Add("ColumnC", "ColumnC") 
DataGridView1.Columns(index).DataPropertyName = "Column3" 

Dim dt As New DataTable 
Dim ds As New DataSet 
ds.Tables.Add(dt) 
Dim da As New OleDbDataAdapter("SELECT Column1, Column2, Column3, Column4, Column5 FROM Table1 WHERE Condition = true", con) 
da.Fill(dt) 
DataGridView1.DataSource = dt 

Таким образом, вы выбираете Column1 к Column5 из таблицы, но только Column1 к Column3 появится на DGV; также заголовки столбцов будут ColumnA, ColumnB и ColumnC.

Вы также можете указать это во время разработки DataGridView, чтобы сохранить некоторый код и определить из самого начала, какие столбцы будут отображаться и как; вам нужно будет установить только AutoGenerateColumns = false перед настройкой источника данных.

DataPropertyName in design

Смежные вопросы