2013-08-29 181 views
2

填充編程方式聲明的datagridview只是有一些與c#winforms datagridview小問題。這是我的場景使用數據源和實體框架

我正在使用實體框架,並試圖將某些實體模型綁定到我的datagridview數據源。

var query = from q in context.foo 
select q; 

dgv_Disp.DataSource = query.ToList(); 

當我運行這段代碼上面的表格類曾在GUI一個DataGridView,它都能正常運作。 datagridview會自動生成列和行數。

但是,當我運行這個完全相同的代碼,除了我沒有在GUI中的datagridview,我只是以編程方式聲明它,然後像上面的代碼設置數據源。當我這樣做時,不會生成行或列。

這兩個不同的datagridviews有什麼區別?我知道在表單類的designer.cs文件中設置了屬性。但我試圖複製這些設置,它仍然不會填充。

我知道這可能很簡單,但我根本無法弄清楚這一點。如果有人能告訴我我做錯了什麼,那會很棒!

編輯

我用的AutoGenerateColumns = true,但它並沒有任何區別。另外我實際上並沒有試圖顯示這個datagridview,我只是將它綁定到實體對象,這樣我可以使用字符串索引訪問其成員。但我不想查詢數據庫只是爲了讓我的信息以datagridview特定的格式獲取,因爲在我的實際場景中,我已經有了來自先前查詢的實體數據。我只是使用上面的代碼作爲例子。

+0

是這個WindowsForm應用程序? – Damith

+0

是的,它的winforms –

回答

0

的Winforms datagridview的僅生成列。通過在窗體設計器中將所有的datagridviews粘貼到窗體上,datagridviews根據需要生成列。我實際上並不需要表單,所以我只是沒有調用show()方法。似乎有點處理這個問題的hackish的方式,但這就是我如何解決這個問題

1

當創建的datagridview的對象,你需要設置

dataGridView1.AutoGenerateColumns = true 

請確保您已爲其分配的數據源這樣做過。

2

你的代碼應該工作。下面是綁定List<T>DataGridView示例代碼,但你需要的DataGridView添加到窗體或其他一些面板(或容器)

public Form1() 
    { 
     InitializeComponent(); 
     DataGridView gv = new DataGridView(); 
     gv.DataSource = new List<string>() { "sss", "aaa" }.Select(x => new { Name = x }).ToList(); 
     this.Controls.Add(gv); // add gridview to current form or panel (or container), then only it will display 
    } 
+0

我真的不想顯示數據,是否有某種容器我可以聲明並添加它? –

+0

目前還不清楚爲什麼你需要DataGridView,如果你不需要顯示數據,你到底想要做什麼? – Damith

+0

我有一個表中引用另一個表中的列的字符串列表。我想將第二個表綁定到datagridview,這樣我可以訪問執行dgv.rows [0] .Cells [index]的值。如果數據保持直的實體,我不能使用字符串訪問數據。我知道這不是datagridview的真正標準用法,但它使我更容易爲我lol –

2

起初有在我的設計沒有網格。如果其實際上是GUI的一部分IAM添加網格也在動態

 AmolEntities db=new AmolEntities(); 

     DataGrid dataGridView1 = new DataGrid(); 
     this.Controls.Add(dataGridView1); 

     var v= from n in db.oe_subjects select n; 
     dataGridView1.DataSource = v.ToList(); 
0

我已經輕鬆完成首先聲明一個新的變量相同的DataTable,然後我把tableAdapter.Fill(dt);然後dbGrid.DataSource = dt;

它工作得很好