码迷,mamicode.com
首页 > 其他好文 > 详细

设置DataSource后DateGridView不显示的问题

时间:2016-12-31 12:20:06      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:ring   exe   date   问题   ide   span   led   GridView   代码   

    在一个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();

 

设置DataSource后DateGridView不显示的问题

标签:ring   exe   date   问题   ide   span   led   GridView   代码   

原文地址:http://www.cnblogs.com/jqdy/p/6238937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!