
[英]C# How to Access Hidden DataTable Columns That is DataSource Binded in DataGridView
[英]Howto determine order of displayed columns in a datagridview binded to a datasource
有什么方法可以确定datagridview中显示的列的顺序,当它绑定到包含基础IList的数据源时? 我认为有一个特定的属性属性用于此目的但不记得它实际上是什么。
例如:
public void BindToGrid(IList<CustomClass> list)
{
_bindingSource.DataSource = list;
dataGridView1.DataSource = _bindingSource.DataSource;
}
binded类型应该是这样的
class CustomClass
{
bool _selected = false;
//[DisplayOrder(0)]
public bool Selected
{
get { return _selected; }
set { _selected = value; }
}
string _name;
//[DisplayOrder(2)]
public string Name
{
get { return _name; }
set { _name = value; }
}
string _value;
//[DisplayOrder(1)]
public string Value
{
get { return _value; }
set { _value = value; }
}
}
编辑:我想补充一点,我不想手动将列添加到设计器中的列列表中。 我想尽可能保持这种动态。
在DataGridView
指定实际的列列表,而不是允许它自动数据绑定。 您可以通过选择控件并添加列,在Visual Studio的“设计视图”中执行此操作。 确保在每列中指定它应绑定到哪个属性。 然后,您可以按照您想要的方式重新排列列以及进行其他自定义。
我认为DisplayOrder
属性相对较新,可能在DataGridView
控件中不受支持。
我不确定这是否是.Net提供的功能,但如果您只是更改类中属性的顺序,则网格以相同的顺序呈现列。
以下两个类将按照它们在类中键入的顺序呈现。 奇怪!!
class CustomClass
{
public bool Selected {get;set;}
public string Name{get;set;}
}
class CustomClass
{
public string Name{get;set;}
public bool Selected {get;set;}
}
列排序并不总是有效。 您需要关闭AutoColumnCreate来修复不一致性:
http://www.internetworkconsulting.net/content/datadridview-displayorder-not-working
DataGridView
列的显示顺序由DataGridViewColumn
-s的DisplayIndex
属性确定。 您必须在网格的列上设置这些属性,以便更改其顺序。
我也同意Eilon的回答:你可以自己创建列的列表,而不是自动数据绑定,这样你就可以确定它们的显示顺序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.