2013-06-18 2 views
1

Я новичок в vb.net. Я привык делать вещи старыми школьными способами (VB6).Как вручную заполнить привязку данных управления datagridview в vb.net?

Есть ли способ вручную заполнить datagridview? По-старому (VB6) я заполняю список, добавляя столбцы вручную и создавая петлю для набора записей, чтобы добавить строки.

Например, что делать, если у меня есть эта команда (storedproc).

"Select OrderID, ProductName, Qty, SellingPrice, CustomerName FROM tblOrders".

Что делать, если мне нужно только, чтобы показать OrderID, ProductName and SellingPrice?

Есть ли способ, чтобы вручную добавить столбцы OrderID, ProductName, SellingPrice к DataGridView и петли в наборе результатов добавить строки?

Заранее спасибо.

ответ

2

Чтобы добавить столбец в DataTable

Dim MyTable as New DataTable 
Dim dc As DataColumn 

dc = New DataColumn 
dc.DataType = System.Type.GetType("System.String") 
dc.ColumnName = "OrderID" 
MyTable.Columns.Add(dc) 

dc = New DataColumn 
dc.DataType = System.Type.GetType("System.String") 
dc.ColumnName = "ProductName" 
MyTable.Columns.Add(dc) 

dc = New DataColumn 
dc.DataType = System.Type.GetType("System.String") 
dc.ColumnName = "SellingPrice" 
MyTable.Columns.Add(dc) 

Таким образом, вы можете установить MyTable в качестве Datasource

DataGridview1.DataSource = MyTable 

Чтобы добавить строки .. http://msdn.microsoft.com/en-us/library/5ycd1034(v=vs.80).aspx

+0

Мне нужно, чтобы добавить столбцы и строки вручную. – user2059064

+0

@ user2059064 .. Добавлено – matzone

+0

Мои данные взяты из хранимой процедуры. Я не использую прямой доступ к таблице. Мне нужно, чтобы программно заполнить datagridview (вручную добавить столбцы и строки). – user2059064

0

У меня есть странное решение. Если ваш запрос никогда не изменится (первый столбец навсегда «OrderID», второй - «ProductName» и т. Д.), Вы можете скрыть нежелательные столбцы.

DataGridView1.Columns(2).Visible = False  'hiding 3rd column 
DataGridView1.Columns(4).Visible = False  'hiding 5th column 
+0

Точно так же, как подсказка: это, вероятно, будет работать для вопроса об OP выше, но не сработает для [связывания сложных объектов] (http://stackoverflow.com/questions/5955188/how-does-one-bind-a-complex -объект к-а-DataGridView/5955394 # 5955394). – surfmuggle

0

Я получил этот код из книги. Этот код достаточно близко. По крайней мере, я могу настроить формат и выравнивание столбца.

Imports System.Data 
    Imports System.Data.SqlClient 
    Imports System.Configuration 

    Public Class Form1 

     Dim objConnection As New SqlConnection(ConfigurationManager.ConnectionStrings("MyDatabase").ConnectionString) 
     Dim objDataAdapter As New SqlDataAdapter() 
     Dim objDataSet As New DataSet() 


    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 

     objDataAdapter.SelectCommand = New SqlCommand() 
     objDataAdapter.SelectCommand.Connection = objConnection 
     objDataAdapter.SelectCommand.CommandText = "SELECT authors.au_lname, authors.au_fname, titles.title, titles.price FROM authors INNER JOIN titleauthor ON authors.au_id = titleauthor.au_id INNER JOIN titles ON titleauthor.title_id = titles.title_id ORDER BY authors.au_lname, authors.au_fname" 
     objDataAdapter.SelectCommand.CommandType = CommandType.Text 

     objConnection.Open() 
     objDataAdapter.Fill(objDataSet, "authors") 
     objConnection.Close() 

     grdAuthorsTitles.AutoGenerateColumns = True 
     grdAuthorsTitles.DataSource = objDataSet 
     grdAuthorsTitles.DataMember = "authors" 

     Dim objAlignRightCellStyle As New DataGridViewCellStyle 
     objAlignRightCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 

     Dim objAlernatingCellStyle As New DataGridViewCellStyle() 
     objAlernatingCellStyle.BackColor = Color.WhiteSmoke 
     grdAuthorsTitles.AlternatingRowsDefaultCellStyle = objAlernatingCellStyle 

     Dim objCurrencyCellStyle As New DataGridViewCellStyle() 
     objCurrencyCellStyle.Format = "c" 
     objCurrencyCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight 

     grdAuthorsTitles.Columns(0).HeaderText = "Last Name" 
     grdAuthorsTitles.Columns(1).HeaderText = "First Name" 
     grdAuthorsTitles.Columns(2).HeaderText = "Book Title" 
     grdAuthorsTitles.Columns(2).Width = 225 

     grdAuthorsTitles.Columns("price").HeaderCell.Value = "Retail Price" 
     grdAuthorsTitles.Columns("price").HeaderCell.Style = objAlignRightCellStyle 
     grdAuthorsTitles.Columns("price").DefaultCellStyle = objCurrencyCellStyle 

     objDataAdapter = Nothing 
     objConnection = Nothing 
     objCurrencyCellStyle = Nothing 
     objAlignRightCellStyle = Nothing 
     objAlernatingCellStyle = Nothing 

    End Sub 

End Class