使用数据源和实体框架填充程序声明的数据网格视图
本文关键字:声明 数据 数据网 视图 网格 程序 填充 数据源 实体 框架 | 更新日期: 2023-09-27 18:29:30
只是在c#winforms datagridview中遇到了一些小问题。这是我的场景
我正在使用实体框架,并试图将某些实体模型绑定到我的datagridview数据源。
var query = from q in context.foo
select q;
dgv_Disp.DataSource = query.ToList();
当我在GUI中有一个datagridview的表单类上运行上面的这段代码时,一切都很好。datagridview将自动生成列和行数。
但是,当我运行完全相同的代码时,除了GUI中没有数据网格视图之外,我只是以编程方式声明它,然后像上面的代码一样设置数据源。当我这样做时,不会生成任何行或列。
这两种不同的数据网格视图之间有什么区别?我知道表单类的designer.cs文件中设置了一些属性。但我尝试复制这些设置,但它仍然无法填充。
我知道这可能很简单,但我根本无法理解。如果有人能告诉我我做错了什么,那就太好了!
编辑
我使用了AutoGenerateColumns=true,但没有任何区别。此外,我实际上并没有试图显示这个数据网格视图,我只是将它绑定到实体对象,这样我就可以使用字符串索引访问它的成员。但我不想仅仅为了以数据网格视图特定的格式获取信息而查询数据库,因为在我的实际场景中,我已经有了以前查询中的实体数据。我只是以上面的代码为例。
您的代码应该可以工作。下面是将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
}
起初,我的设计中没有网格。我还在动态中添加网格
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();
创建datagridview对象时,需要设置
dataGridView1.AutoGenerateColumns = true
在将数据源分配给它之前,请确保您已经完成了此操作。
Winforms datagridview只有在它实际上是GUI的一部分时才会生成列。通过在表单设计器中将我的所有数据网格视图粘贴在表单上,数据网格视图根据我的需要生成列。我实际上并不需要这个表单,所以我只是没有调用show()方法。这似乎是一种处理问题的方法,但这就是我修复的方法
我做得很容易。首先声明了同一DataTable的一个新变量,然后我放入tableAdapter.Fill(dt);然后dbGrid.DataSource=dt;
它的运行良好