我有一个List<>
,其中包含一个X类
。
X类
有3个列:a
、b
和c
。
现在,我将该列表绑定到DataGridView
上:
dataGrid.DataSource = list;
如何在GridView中仅显示列a和c,隐藏列b?不编辑列表本身或生成新列表的情况下,有什么解决方案吗?
我有一个List<>
,其中包含一个X类
。
X类
有3个列:a
、b
和c
。
现在,我将该列表绑定到DataGridView
上:
dataGrid.DataSource = list;
我假设你的类是这样的:
private class MyClass
{
[DisplayName("Foo/Bar")]
public string FooBar { get; private set; }
[Browsable(false)]
public decimal Baz { get; private set; }
[DisplayName("Baz")]
public CurrencyBaz => string.Format(Baz, "C2");
}
以上代码中,GridView的列名如下:
("Foo/Bar")
"Baz"
"CurrencyBaz"
如果您不想显示某一列,只需添加此属性:[Browsable(false)]
以上代码中,列名2没有被显示......
希望这能对您有所帮助...
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;
}
您将需要:
dataGrid.AutoGenerateColumns = false;
然后,您需要为X类的每个成员添加一列,并将这些数据绑定。
根据名称隐藏列
dgvEmployees.DataSource = data
dgvEmployees.Columns("Id").Visible = False
dgvEmployees.Columns("ElementEtat").Visible = False
你需要做的基本事情是:
首先将 AutoGenerateColumns 属性设置为 False。
dataGrid.AutoGenerateColumns = false;
之后在RowDataBound事件中你可以这样做
protected void dataGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow || e.Row.RowType==DataControlRowType.Header)
{
e.Row.Cells[index of the cell to hide].Visible =false;
}
}