2

只是在 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 特定格式获取我的信息,因为在我的实际场景中,我已经从以前的查询中获得了我的实体数据。我只是以上面的代码为例。

4

5 回答 5

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 
    }
于 2013-08-29T07:07:46.373 回答
2

起初我的设计中没有网格。我也在动态添加网格

        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();
于 2013-08-29T07:10:34.133 回答
1

创建 datagridview 的对象时,您需要设置

dataGridView1.AutoGenerateColumns = true

请确保在将数据源分配给它之前已完成此操作。

于 2013-08-29T07:01:11.927 回答
0

Winforms datagridview 仅在它实际上是 GUI 的一部分时才生成列。通过将我所有的 datagridviews 粘贴在表单设计器中的表单上,datagridviews 可以根据需要生成列。我实际上并不需要表单,所以我只是没有调用 show() 方法。处理这个问题的方式似乎有点骇人听闻,但这就是我解决这个问题的方法

于 2014-08-14T20:04:09.630 回答
0

我已经很容易了首先声明了同一个 DataTable 的新变量,然后我把 tableAdapter.Fill(dt); 然后 dbGrid.DataSource = dt;

它工作得很好

于 2017-11-11T20:20:53.107 回答