2011-11-08 75 views
5

我有一個List<>class X將List <>中的DataGridView中的列隱藏爲DataSource?

X有3列:a,bc

現在我綁定的DataGridView名單:

dataGrid.DataSource = list; 

如何,只顯示在GridView列和c,所以隱藏列b

如果可能的話,我不會編輯列表本身,也不會生成新列表。

這裏的任何解決方案?

回答

3

你將需要:

dataGrid.AutoGenerateColumns = false; 

然後你需要添加一列每個類X的成員和數據綁定的。

0

你需要做的這個基本的東西,

第一套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; 

      } 
     } 
6

隱藏列將工作,但可以使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; 
} 
8

我假設你的類是這樣的:

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的列名都是這樣

  • 列名1:("Foo/Bar")
  • 列名2: "Baz"
  • column name3:"CurrencyBaz"

,如果你不想告訴你可以只需將這樣的列...不顯示[可瀏覽(假)]

在上面的代碼中列名2 ......

我希望它會幫助你...

+0

SOOOO很好,謝謝隱藏列。不知道這個屬性! –

0

或名稱

dgvEmployees.DataSource = data 
dgvEmployees.Columns("Id").Visible = False 
dgvEmployees.Columns("ElementEtat").Visible = False 
相關問題