Hej!ASP.Net gridview med dynamiska kolumner
Jag har en gridview i vilken jag vill ha in dynamiska kolumner.
Gridview:en ska alltså ha ett antal kolumner som skapas dynamiskt utifrån en tabell i en databas. Mitt problem är hur jag ska koppla dessa kolumner med data.
Säg t.ex. att jag vill ha två dynamiska kolumner (BoundField) att fylla med värden. När jag skapar dessa kopplar jag normalt egenskapen DataField mot en egenskap i en klass. I mitt exempel nedan skulle jag t.ex. kunna koppla mot egenskapen 'Name'.
Nu vill jag koppla mot det första och andra objektet i listan 'DynamicColumns'. Hur kan man göra detta? Om inte, är det möjligt att skapa dynamiska egenskaper i klassen 'Item' så att jag kan koppla som jag skulle göra om jag kopplar mot egenskapen 'Name'?
protected void Page_Load(object sender, EventArgs e)
{
// Skapa en lista att fylla med data
var list = new list<Item>();
// Skapa itema till listan
var itema = new Item("A", "");
itema.DynamicColumns.Add("dynamisk kolumn1 värde");
itema.DynamicColumns.Add("dynamisk kolumn2 värde");
// Skapa itemb till listan
var itemb = new Item("B", "");
itemb.DynamicColumns.Add("dynamisk kolumn1 värde");
itemb.DynamicColumns.Add("dynamisk kolumn2 värde");
// Lägg till data till listan
list.Add(itema);
list.Add(itemb);
// Skapa dynamisk kolumn 1
BoundField cola = new BoundField();
cola.HeaderText = "Dynamic column 1";
cola.DataField = DynamicColumns[0] <<<--- Hur kan jag göra detta?
gridview.Columns.Add(cola);
// Skapa dynamisk kolumn 1
BoundField colb = new BoundField();
colb.HeaderText = "Dynamic column 2";
colb.DataField = DynamicColumns[1] <<<--- Hur kan jag göra detta?
gridview.Columns.Add(colb);
// Koppla data
gridview.DataSource = list;
gridview.DataBind();
}
public class Item
{
public string Name {get; set;}
public string Descripion {get; set;}
public List<string> DynamicColumns {get; set;}
public Item(string name, string description)
{
this.Name = name;
this.Description = description;
this.DynamicColumns = new List<string>();
}
}