DataGrid的数据源如何使用数组,并且如何自定义列?

7
在我的Windows Mobile .NET应用程序中,我有一个简单的对象数组,其中包含我想在DataGrid中显示的数据。为此,我只需调用: myDataGrid.DataSource = myArray; 这个方法可以工作,但是我有一个问题:它将所有属性都用作列,并使用属性名称作为列标题。我无法弄清楚如何自定义以下两个内容:
- 选择要显示为列的属性子集(例如,如果我有ID、Name和Value属性,我只想显示Name和Value); - 重命名列标题以更有意义(例如,如果属性被称为ID,则显示一个列标题为“Number”)。
这是否可能?
如上所述,这是在Windows Mobile .NET(版本2)应用程序中。
3个回答

1

您需要设置 Datagrid.TableStyles 属性来自定义布局。

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagrid.tablestyles.aspx

有关绑定对象数组的更多详细信息,请参见此处: http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridtablestyle.mappingname(VS.71).aspx

要将 System.Windows.Forms.DataGrid 绑定到强类型对象数组,该对象必须包含公共属性。要创建显示此类数组的 DataGridTableStyle,请将 MappingName 属性设置为 classname[],其中 classname 被替换为类名。还请注意,MappingName 属性区分大小写。


我之前已经找到了这些,但我不太确定它们如何与数组作为数据源一起使用。我能找到的唯一信息是将其与DataTable一起使用。 - pbean
啊,这个可行。一个非常好的例子在这里:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridtablestyle.mappingname.aspx - pbean
谢谢这个解决方案! :) 稍微补充一下:显然我也可以在设计时编辑表格样式,方法是点击DataGrid的TableStyles属性上的[...]按钮。我需要在MappingName属性中填写正确的类型(例如“Person []”)。然后我可以在GridColumnStyles属性中编辑列(再次使用[...]按钮),在其MappingName属性中输入属性名称(例如“Surname”),在HeaderText属性中输入显示名称。基本上与代码中相同,但在设计时更容易一些。 :) - pbean

0
在这段代码中,_im是一个表对象,并且我将该对象与DataGridView dgvItem绑定。绑定后,我根据需要更改dgvItem的标题文本。
    dgvItem.Rows.Clear();
    dgvItem.DataSource = _im ;
    dgvItem.Columns[2].HeaderText = "Mobile Code";
    dgvItem.Columns[3].HeaderText = "Mobile Name";

0

我不知道你是否提前知道列的名称?但如果是这种情况,你可以进入DataGridView的“编辑列”中,在那里创建你的列。在“数据”类别中,将“DataPropertyName”从“(none)”更改为类属性的名称。从那里你可以自定义名称、大小等。DataGrid会将其绑定到你的数据源。

此外,还有一个属性“DataGridView.AutoGenerateColumns”,你可以将其设置为false,这样你就不必绑定对象的所有属性了。我认为这可能也会有所帮助。


不幸的是,这不是关于DataGridView而是DataGrid(前身),我无法像在“普通”(Windows)表单上使用DataGridView那样在设计时编辑列。 - pbean
因此,您必须通过tablestyles手动完成:http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridtablestyle(v=VS.100).aspx但我想您可以从DataGrid继承并创建自己的属性,将其映射到tableStyles,以便可以使用设计器。 但是,如果您的意图只是针对一个表格进行操作,那可能不值得这样做。 - Sauleil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接