我有一個List<>
的class X
。將List <>中的DataGridView中的列隱藏爲DataSource?
X
有3列:a
,b
和c
。
現在我綁定的DataGridView
名單:
dataGrid.DataSource = list;
如何,只顯示在GridView
列和c
,所以隱藏列b
?
如果可能的話,我不會編輯列表本身,也不會生成新列表。
這裏的任何解決方案?
我有一個List<>
的class X
。將List <>中的DataGridView中的列隱藏爲DataSource?
X
有3列:a
,b
和c
。
現在我綁定的DataGridView
名單:
dataGrid.DataSource = list;
如何,只顯示在GridView
列和c
,所以隱藏列b
?
如果可能的話,我不會編輯列表本身,也不會生成新列表。
這裏的任何解決方案?
你將需要:
dataGrid.AutoGenerateColumns = false;
然後你需要添加一列每個類X的成員和數據綁定的。
你需要做的這個基本的東西,
第一套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;
}
}
隱藏列將工作,但可以使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;
}
我假設你的類是這樣的:
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"); }
}
}
在上面的代碼GridView的列名都是這樣
("Foo/Bar")
"Baz"
"CurrencyBaz"
,如果你不想告訴你可以只需將這樣的列...不顯示[可瀏覽(假)]
在上面的代碼中列名2 ......
我希望它會幫助你...
或名稱
dgvEmployees.DataSource = data
dgvEmployees.Columns("Id").Visible = False
dgvEmployees.Columns("ElementEtat").Visible = False
SOOOO很好,謝謝隱藏列。不知道這個屬性! –