【问题标题】:Dynamically created DevExpress DataGridView contains no data after setting DataSource设置DataSource后动态创建的DevExpress DataGridView不包含数据
【发布时间】:2020-03-16 14:09:29
【问题描述】:

我已经用设计器创建了一个 GridControl 和 GridView 并设置了 DataSource 并且一切正常。但是,当我在代码中创建一个新的 GridControl 和一个分配给该 GridControl 的新 GridView 并正确设置 DataSource 属性时,GridView 不保存任何数据并且 RowCount 返回 0。有什么想法吗?

 public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        gridControl1.DataSource = StraddleDataHandler.Data;

        GridControl g1 = new GridControl();

        g1.DataSource = StraddleDataHandler.Data;

        GridView v1 = new GridView(gridControl1);

        Console.WriteLine(v1.RowCount);
    }
}

当我在设计器中手动创建的网格控件中设置 DataSource 属性时,一切正常,有什么想法吗?

【问题讨论】:

标签: c# winforms devexpress


【解决方案1】:

您需要先为 GridControl 设置 BindingContext,然后它才会生成。

g1.BindingContext = this.BindingContext;

【讨论】:

    【解决方案2】:

    gridview 没有与您的代码一起显示 - 无论是默认(主)grid view 仍然是,即使您已经创建了第二个视图。

    因此,DevExpress 明智地(在我看来)不会费心渲染网格视图,因为它不显示。

    如果您将视图设为主视图,我想您会看到行出现。

    GridView v1 = new GridView(gridControl1);
    int before = v1.RowCount;  // 0, per your example
    gridControl1.MainView = v1;
    int after = v1.RowCount;   // now should have the correct rowcount
    

    只是好奇,但你的意思是这样做吗?

    GridView v1 = new GridView(g1);  // instead of gridControl1?
    

    【讨论】:

    • 不,为了演示目的,我展示了 GridView 显示了带有 gridControl1 的数据,然后新的没有显示带有 gridControl1 的数据,无论如何,谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多