Thursday, September 4, 2008

Dynamic DataGrid Templates

public void DynamicGrid()
{
DataGrid dg = new DataGrid();
DataSet ds = objws.getempinactivity(1, 8, DateTime.Now.AddDays(-50), DateTime.Now);
DataTable dt = ds.Tables[0];

for (int i = 0; i <= dt.Columns.Count - 1; i++)
{
TemplateColumn templateColumn = new TemplateColumn();
string columnName = dt.Columns[i].ColumnName;
templateColumn.HeaderTemplate = new DataGridTemplate(ListItemType.Header, columnName);
for (int j = 0; j <= dt.Rows.Count - 1; j++)
{
string value = dt.Rows[j][i].ToString();
templateColumn.ItemTemplate = new DataGridTemplate(ListItemType.Item, value);

}
DataGrid1.Columns.Add(templateColumn);
}
DataGrid1.DataSource = ds;
DataGrid1.DataBind();
}



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;

///
/// RENJU.R
/// Summary description for DataGridTemplate
///
public class DataGridTemplate : ITemplate
{
ListItemType templateType;
string columnName;
public DataGridTemplate(ListItemType type, string colname)
{
//
// TODO: Add constructor logic here
//
templateType = type;
columnName = colname;

}
public void InstantiateIn(System.Web.UI.Control container)
{
Literal lc = new Literal();
switch (templateType)
{
case ListItemType.Header:
lc.Text = "" + columnName + "";
container.Controls.Add(lc);
break;
case ListItemType.Item:
lc.Text = columnName;
container.Controls.Add(lc);
break;
case ListItemType.EditItem:
TextBox tb = new TextBox();
tb.Text = "";
container.Controls.Add(tb);
break;
case ListItemType.Footer:
lc.Text = "" + columnName + "";
container.Controls.Add(lc);
break;
}
}
//public void InstantiateIn(Control container)
//{
// LiteralControl l = new LiteralControl();
// l.DataBinding += new EventHandler(this.OnDataBinding);
// container.Controls.Add(l);
//}

//public void OnDataBinding(object sender, EventArgs e)
//{
// LiteralControl l = (LiteralControl)sender;
// DataGridItem container = (DataGridItem)l.NamingContainer;
// l.Text = ((DataRowView)container.DataItem)[colname].ToString();
//}
}
Poste

0 comments: