In questo esempio viene mostrato come creare un TemplateField ed un BoundFiled di una Gridview da codice.
Una volta creato il TemplateField sara' inserito al suo interno, sempre dinamicamente, una DropDownList.
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial
class _Default : System.Web.UI.Page
{
static
private DataSet
ds = new DataSet();
protected
void Page_Load(object
sender, EventArgs e)
{
Int32 colCount = GridView1.Columns.Count;
for(int i = 0; i<colCount; i++)
{
GridView1.Columns.RemoveAt(0);
}
////////Creo il dataset per la dropdown list
DataTable dt = new
DataTable();
dt.Columns.Add("Valore");
dt.Columns.Add("Testo");
for (int i = 0; i < 2; i++)
{
DataRow dr = dt.NewRow();
dr["Valore"] = i.ToString();
dr["Testo"] = "Colore"+i.ToString();
dt.Rows.Add(dr);
}
ds.Tables.Add(dt);
//////////////////////////////////////////////
//Creo il dataset per la gridview
DataSet ds2 = new
DataSet();
DataTable dt2 = new
DataTable();
dt2.Columns.Add("CampoNome");
for (int
i = 0; i < 2; i++)
{
DataRow dr2 = dt2.NewRow();
dr2["CampoNome"] = "Nome" + i.ToString();
dt2.Rows.Add(dr2);
}
ds2.Tables.Add(dt2);
//////////////////////////////////////////////
//Aggiungo un databound alla gridview
BoundField bf = new
BoundField();
bf.HeaderText
= "Nome";
bf.DataField
= "CampoNome";
GridView1.Columns.Add(bf);
GridView1.DataSource
= ds2;
//Creo il template field
TemplateField tf = new
TemplateField();
tf.HeaderText
= "Colore";
tf.ItemTemplate
= new myGridViewTemplate();
GridView1.Columns.Add(tf);
GridView1.DataBind();
Label1.Text =
"Non hai cambiato nessun colore";
}
public
class myGridViewTemplate
: ITemplate
{
public myGridViewTemplate()
{
}
//Implemento il metodo astratto InstantiateIn dell'Interfaccia ITemplate
//Questo metodo sar� richiamato automaticamente
public void InstantiateIn(System.Web.UI.Control container)
{
DropDownList DrDwL = new
DropDownList();
DrDwL.DataValueField = "Valore";
DrDwL.DataTextField = "Testo";
DrDwL.AutoPostBack = true;
DrDwL.SelectedIndexChanged += new
EventHandler(DrDwL_SelectedIndexChanged);
DrDwL.DataSource = ds;
DrDwL.ID = "Drdwl";
DrDwL.AppendDataBoundItems = true;
container.Controls.Add(DrDwL);
}
void DrDwL_SelectedIndexChanged(object
sender, EventArgs e)
{
((Label)((DropDownList)sender).Page.FindControl("Label1")).Text = "Hai cambiato
colore!";
}
}
}