Many times we have the requirement where we have to create columns dynamically.
This article describes you about the dynamic loading of data using the DataTable as the datasource.
Details of the Grid
Let s have a look at the code to understand better.
Create a gridview in the page
- Drag and drop the GridView on to the page
Or
- Manually type GridView definition in the page.
public partial class _Default : System.Web.UI.Page
{
#region constants
const string NAME NAME ;
const string ID ID ;
#endregion
protected void Page_Load(object sender EventArgs e)
{
loadDynamicGrid();
}
private void loadDynamicGrid()
{
#region Code for preparing the DataTable
//Create an instance of DataTable
DataTable dt new DataTable();
//Create an ID column for adding to the Datatable
DataColumn dcol new DataColumn(ID typeof(System.Int32));
dcol.AutoIncrement true;
dt.Columns.Add(dcol);
//Create an ID column for adding to the Datatable
dcol new DataColumn(NAME typeof(System.String));
dt.Columns.Add(dcol);
//Now add data for dynamic columns
//As the first column is auto-increment we do not have to add any thing.
//Let's add some data to the second column.
for (int nIndex 0; nIndex < 10; nIndex++)
{
//Create a new row
DataRow drow dt.NewRow();
//Initialize the row data.
drow[NAME] Row- + Convert.ToString((nIndex + 1));
//Add the row to the datatable.
dt.Rows.Add(drow);
}
#endregion
//Iterate through the columns of the datatable to set the data bound field dynamically.
foreach (DataColumn col in dt.Columns)
{
//Declare the bound field and allocate memory for the bound field.
BoundField bfield new BoundField();
//Initalize the DataField value.
bfield.DataField col.ColumnName;
//Initialize the HeaderText field value.
bfield.HeaderText col.ColumnName;
//Add the newly created bound field to the GridView.
GrdDynamic.Columns.Add(bfield);
}
//Initialize the DataSource
GrdDynamic.DataSource dt;
//Bind the datatable with the GridView.
GrdDynamic.DataBind();
}
}