winforms C#:数据网格视图不显示数据

qncylg1j  于 2023-01-17  发布在  C#
关注(0)|答案(8)|浏览(226)

我正在使用winforms应用程序。在我的表单上,我只是简单地拖放一个DataGridView控件,然后使用属性窗口设置它的一些属性。下面是我用来填充DataGridView的代码。我在构造函数中编写了这段代码。

List<MyCustomClass> lst = new List<MyCustomClass>();
lst = LoadList(/*some params here*/);//now uptil this point everything works i.e the list contains values as desribed.
dataGridView1.DataSource = lst;

问题是,当我运行程序时,我的DataGridView中没有显示任何内容。
有关更多细节,下面的代码表示我使用属性窗口设置的属性

this.dataGridView1.AllowUserToAddRows = false;
        this.dataGridView1.AllowUserToDeleteRows = false;
        this.dataGridView1.AllowUserToResizeRows = false;
        this.dataGridView1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                    | System.Windows.Forms.AnchorStyles.Right)));
        this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
        this.dataGridView1.BackgroundColor = System.Drawing.Color.White;
        this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
        this.dataGridView1.GridColor = System.Drawing.Color.White;
        this.dataGridView1.Location = new System.Drawing.Point(2, 329);
        this.dataGridView1.Margin = new System.Windows.Forms.Padding(2);
        this.dataGridView1.MultiSelect = false;
        this.dataGridView1.Name = "dataGridView1";
        this.dataGridView1.RowHeadersVisible = false;
        this.dataGridView1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect;
        this.dataGridView1.Size = new System.Drawing.Size(334, 106);
        this.dataGridView1.TabIndex = 0;
a6b3iqyw

a6b3iqyw1#

我今天得到了几乎相同的东西,问题是我的类有公共字段,而不是属性,因为我已经把它们改为公共自动属性-对我来说工作得很好。

js81xvg6

js81xvg62#

在分配DataSource之前添加这段代码,应该就可以了

dataGridView1.AutoGenerateColumns = true;

编辑

还要检查是否有公共属性可用于将类的内容显示为DataGridView中的列

1zmg4dgp

1zmg4dgp3#

必须为数据网格创建数据列。请确保还使用相应DataSource项的属性(即“MyCustomClass”类的属性)设置了每列的“DataPropertyName”属性。

nafvub8i

nafvub8i4#

在我的例子中,我没有属性的getter!

x8diyxa7

x8diyxa75#

当我在设计器中绑定时也有同样的问题。但是如果我在构造器中绑定,它就工作得很好

dataGridView1.DataSource = personBindingSource;
personBindingSource.DataSource = persons;
voj3qocg

voj3qocg6#

我也遇到过类似的问题。当您的自定义类具有私有属性,而数据网格视图无法查看这些属性时,通常会发生这种情况。您需要在自定义类字段上创建属性并将其设置为公共属性,以便在从自定义类列表设置数据源时,数据对数据网格视图可见,并且数据可以流过。

crcmnpdw

crcmnpdw7#

我使用的是VS 2022 w/ VB .NET 7。我的情况是行数与数据源匹配,但没有显示任何内容:我的解决方案是:
1.转到设计器模式
1.单击编辑列(在属性面板中)
1.对于每一列,在DataPropertyName中键入数据源中的列名
现在,如果您像我一样,有一个ComboList是在程序运行时生成的,那么您需要这样做来为组合分配DataSource

'mstrCellList has been populated
'the bottomline is you have to convert to the ComboBoxColumn in order to 
'access the DataSource property
CType(vsFlexRouteStep.Columns(Cell), DataGridViewComboBoxColumn).DataSource _
  = mstrCellList

祝你好运!

0md85ypi

0md85ypi8#

把这个放在最后:

datagridview1.Databind();

这个应该够了。

相关问题