动态创建的 DevExpress DataGridView 在设置 DataSource 后不包含任何数据

Dynamically created DevExpress DataGridView contains no data after setting DataSource

我已经使用设计器创建了 GridControl 和 GridView,并设置了 DataSource,一切正常。但是,当我在代码中创建一个新的 GridControl 和一个分配给该 GridControl 的新 GridView 并正确设置 DataSource 属性 时,GridView 没有数据并且 RowCount returns 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 属性 时一切正常,有什么想法吗?

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

因此,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?

您需要为 GridControl 设置 BindingContext 才能生成。

g1.BindingContext = this.BindingContext;