Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 数组作为DataGrid的数据源:如何自定义列?_C#_.net_Windows Mobile_Datagrid_Compact Framework - Fatal编程技术网

C# 数组作为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”) 这可能吗 如前所述,这在

在我的Windows Mobile.NET应用程序中,我有一个简单的对象数组,其中包含要在DataGrid中显示的数据。为此,我只需调用:

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继承,并创建自己的属性映射到表样式,以便使用设计器。但是,如果您打算为一张桌子这样做,那可能不值得。