Kov*_*ovu 5 c# gridview datagridview
我有List<>一个class X.
X有3列:a,b和c.
现在我将List绑定在DataGridView:
dataGrid.DataSource = list;
Run Code Online (Sandbox Code Playgroud)
如何只显示列a和c中GridView,所以隐藏列b?
如果可能的话,我不会编辑列表本身,如果可能的话,我不会生成新的列表.
有解决方案吗?
我假设你的班级是这样的:
private class MyClass {
[DisplayName("Foo/Bar")]
public string FooBar { get; private set; }
[Browsable(False)]
public decimal Baz { get; private set; }
[DisplayName("Baz")]
public CurrencyBaz
{
get { return string.Format(Baz, "C2"); }
}
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,gridview列名称是这样的
("Foo/Bar")"Baz""CurrencyBaz"如果你不想显示列,你可以这样放置...... [可浏览(假)]
在上面的代码列中,名称2不显示......
我希望它会帮助你......
隐藏列将起作用,但可以使DataGridView更难以使用.我认为你最好不要添加列.要做到这一点,我想创建我的对象的接口,仅公开在我的DataGridView我想看到的字段,然后绑定到接口,而不是对象.
public interface IMyBindingObject
{
string A { get; set; }
string C { get; set; }
}
public class MyObject : IMyBindingObject
{
public MyObject(string a, string b, string c)
{
A = a;
B = b;
C = c;
}
public string A { get; set; }
public string B { get; set; }
public string C { get; set; }
}
private void Form1_Load(object sender, EventArgs e)
{
List<IMyBindingObject> obj = new List<IMyBindingObject>();
obj.Add(new MyObject("Test A", "Test B", "Test C"));
obj.Add(new MyObject("T A", "T B", "T C"));
dataGridView1.AutoGenerateColumns = true;
dataGridView1.DataSource = obj;
}
Run Code Online (Sandbox Code Playgroud)
您将需要:
dataGrid.AutoGenerateColumns = false;
Run Code Online (Sandbox Code Playgroud)
然后,您需要为类 X 的每个成员添加一列并对它们进行数据绑定。