C# 数组作为DataGrid的数据源:如何自定义列?
在我的Windows Mobile.NET应用程序中,我有一个简单的对象数组,其中包含要在DataGrid中显示的数据。为此,我只需调用:C# 数组作为DataGrid的数据源:如何自定义列?,c#,.net,windows-mobile,datagrid,compact-framework,C#,.net,Windows Mobile,Datagrid,Compact Framework,在我的Windows Mobile.NET应用程序中,我有一个简单的对象数组,其中包含要在DataGrid中显示的数据。为此,我只需调用: myDataGrid.DataSource=myArray 这是可行的,但我有一个问题:它使用所有属性作为列,并使用属性的名称作为列标题。我不知道如何定制两件事: 选择属性子集应显示为列(假设我有一个ID、名称和值属性,我只想显示名称和值) 重命名列标题以使其更有意义(例如,如果属性名为ID,则显示列标题并显示“Number”) 这可能吗 如前所述,这在
myDataGrid.DataSource=myArray代码>
这是可行的,但我有一个问题:它使用所有属性作为列,并使用属性的名称作为列标题。我不知道如何定制两件事:
- 选择属性子集应显示为列(假设我有一个ID、名称和值属性,我只想显示名称和值)
- 重命名列标题以使其更有意义(例如,如果属性名为ID,则显示列标题并显示“Number”)
这可能吗
如前所述,这在Windows Mobile.NET(版本2)应用程序中。您需要设置Datagrid.TableStyles属性以自定义布局
有关绑定到对象数组的更多详细信息,请参见:
包扎
将System.Windows.Forms.DataGrid添加到
对象的强类型数组
对象必须包含公共属性。
要创建DataGridTableStyle
显示这样一个数组,设置
将MappingName属性映射到classname[]
其中,classname替换为
类名。还请注意
MappingName属性为
区分大小写
我不知道你是否事先知道这些栏目的名称?但如果是这种情况,您可以进入DataGridView的“编辑列”并在那里创建列。在“数据”类别中,将“DataPropertyName”从“(无)”更改为类属性的名称。从那里,您可以自定义名称(如果可见)、大小等。DataGrid会将其绑定到您的数据源
此外,还有一个属性“DataGridView.AutoGenerateColumns”,您可以将其设置为false,这样就不必绑定对象的所有属性。我认为这也有帮助。在这段代码中,im是table的一个对象,我将这个对象与DataGridView dgvItem绑定,绑定后,我会根据需要更改dgvItem的标题文本
dgvItem.Rows.Clear();
dgvItem.DataSource = _im ;
dgvItem.Columns[2].HeaderText = "Mobile Code";
dgvItem.Columns[3].HeaderText = "Mobile Name";
我以前已经发现了这些,但我不太清楚如何使用数组作为数据源。我能找到的唯一信息就是将它与数据表一起使用。啊,这很有效。这里有一个很好的例子:感谢您提供此解决方案!:)还有一点补充:显然,我也可以在设计时编辑表样式,方法是单击DataGrid的TableStyles属性上的[…]按钮。我需要在MappingName属性中填写正确的类型(例如“Person[]”)。然后,我可以编辑GridColumnStyles属性中的列(再次使用[…]按钮),在其MappingName属性中输入属性名称(例如“姓氏”),并在HeaderText属性中输入显示名称。基本上与代码中的相同,但在设计时更容易一些。:)不幸的是,这不是关于DataGridView,而是关于DataGrid(其前身),我无法在设计时像在“普通”(Windows)窗体上使用DataGridView那样编辑列。因此,您必须通过表样式手工完成这项工作:但我认为您可以从DataGrid继承,并创建自己的属性映射到表样式,以便使用设计器。但是,如果您打算为一张桌子这样做,那可能不值得。