2012-09-10 48 views
0

我已經做了基本的程序將值添加到數據集,並顯示它給一個DataGridView:C# - DataSet和DataGridView的

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     DataTable table1 = new DataTable("People"); 
     table1.Columns.Add("id"); 
     table1.Columns.Add("Name"); 
     table1.Columns.Add("Age"); 
     table1.Rows.Add(1, "Jack", 18); 
     table1.Rows.Add(2, "Tim", 18); 

     DataSet set = new DataSet("SetPeople"); 
     set.Tables.Add(table1); 

     dataGridView1.DataSource = set; 
     dataGridView1.Update(); 
    } 
} 

當我嘗試它好像沒有什麼改變。 dataGridView保持空白。任何想法,我哪裏錯了?

回答

3

試試這個

dataGridView1.DataSource = table1; 

你不需要Ds的目的僅是顯示在GridView

+0

這工作!謝謝。 – jw1294

2

的Massimiliano Peluso的數據表是正確的。 GridView將引用一個「Table」,但更具體地說,當以Disconnected方式使用ADO.NET時,您將使用屬於DataTable對象一部分的DataColumn對象填充GridView。你也想將你的dataTable綁定到GridView。

一點細節: ADO.Net的DataSet構造允許您以類似於「表格」的方式表示數據庫,並允許這些表共享引用。所有這些都是以額外的內存開銷爲代價的,但是如果這不會是一個高度可擴展的應用程序,並且您想讓用戶能夠編輯行而無需每次都去數據庫,那麼DataSet是一個很好的選項。

如果您不使用DataSet的特性(例如表關係),只需使用DataTable對象並填充它們即可節省一點開銷。

回答您的問題:

一個GridView預計將收到一個DataTable作爲數據源。該表可以包含多個列(這將填充網格的列)。你可以寫下面的代碼專門訪問您的數據表:

dataGridView1.DataSource = set.Tables["table1"]; // or by index if you prefer as there are several overloads. 

此外,我會通過添加以下代碼行的一個以上perscribed後綁定數據:

dataGridView1.DataBind(); 

事實上你缺少DataBind()方法調用是您的問題的一部分。

有位於C尖角網站一個很好的例子:Example

0

你也可以這樣做:

dataGridView1.DataSource = set; 
dataGridView1.DataMember = set.Tables["People"].TableName; 
dataGridView1.Update();