2011-11-08 6 views

risposta

3

dovrai:

dataGrid.AutoGenerateColumns = false; 

allora si avrà bisogno di aggiungere una colonna per ciascuno dei membri della classe del X e databind quelli.

0

le stoffe di base necessarie per fare questo,

primo set proprietà AutoGenerateColumns False

dataGrid.AutoGenerateColumns = false; 

Dopo che nel RowDataBound evento si fa in questo modo

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

Nascondere le colonne saranno lavoro ma può rendere il DataGridView più difficile da utilizzare. Penso che tu stia meglio non aggiungere le colonne. Per realizzare questo mi piace creare un'interfaccia per il mio oggetto che espone solo i campi che voglio visibili nel mio DataGridView quindi leghiamo all'interfaccia invece che all'oggetto.

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

Io parto dal presupposto la classe è come questo:

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"); } 
    } 
} 

Nel codice sopra i nomi di colonna GridView sono come questo

  • colonna nome1: ("Foo/Bar")
  • colonna nome2: "Baz"
  • nome colonna3: "CurrencyBaz"

se non volete mostrare la colonna si può solo posto come questo ... [sfogliabile (Falso)]

Nel codice nome della colonna sopra il 2 non è visualizzato ......

spero che vi aiuta a ...

+0

soooo grande, grazie. non sapevo di questo Attributo! –

0

o nascondere le colonne per nome

dgvEmployees.DataSource = data 
dgvEmployees.Columns("Id").Visible = False 
dgvEmployees.Columns("ElementEtat").Visible = False