設置DataSource后DateGridView不顯示的問題


    在一個WinForm小程序中,有兩處需要用DataGridView控件顯示數據。設置DataGridView.DataSource為數據查詢結果后,第一個DataGridView可以正常顯示數據,而第二個DataGridView沒有任何反應。

    具體代碼如下:

  1.   第一個datagridview的相關代碼部分:
OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=test.mdb;");
var commandText = "SELECT * FROM AAA";
var command = new OleDbCommand(commandText, connection);
List<TesionData> tesionDatas = new List<TesionData>();
connection.Open();
OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
    var tesionData = new TesionData
    {
        ID = reader["aa"].ToString(),
        Beach = reader["bb"].ToString(),
        Hook = reader["cc"].ToString(),
    };
    tesionDatas.Add(tesionData);
}
reader.Close();
connection.Close();
DataGridView1.DataSource = tesionDatas;

      2. 第二個DataGridView代碼部分

    與第一個相比,數據讀取部分相差不大,區別是分別從兩個表中取得數據,然后用了Linq得到一個匿名類的list

var join = from s in sampleRegisters
           join t in tensionDatas
           on s.Beach equals t.Beach
select new { Beach = s.Beach, Hook = s.Hook, Beacht =t.Beach, Hookt = t.Hook };
DataGridView2.DataSource = join;

    經過檢查,join已經得到了正確的數據,這段代碼沒有什么運行時錯誤,可就是不能顯示數據。

 

    對比這兩個過程,本質的區別就在賦值給DataSource的變量上,第一個是List<類名>,第二個是一個匿名類的List。

    難道join沒有被執行嗎?改成如下代碼,終於成功顯示了相關數據,區別在高亮部分:

var join = from s in sampleRegisters
           join t in tensionDatas
           on s.Beach equals t.Beach
           select new { Beach = s.Beach, Hook = s.Hook, Beacht =t.Beach, Hookt = t.Hook };
DataGridView2.DataSource = join.ToList();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM