using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.UI.WebControls; using System.Data; using System.Collections; using System.Web; namespace CoreSavingLibrary { public class DynamicallyGridView : GridView { public int SelecetdRowIndex = 0; public DataTable Table = new DataTable(); public ArrayList ParameterArray = new ArrayList(); public String TableName { get; set; } public Boolean ShowSQL { get; set; } public String MsgSQL { get; set; } public String MsgText { get; set; } public String MsgError { get; set; } public String MsgTextHtml { get { return "" + MsgText + "
" + ((ShowSQL != null && ShowSQL && MsgSQL != null && MsgSQL.Trim().Length>0) ? ("SQL:
" + MsgSQL + "

") : "") + "" + MsgError + "
"; } } public DynamicallyGridView() : base() { //this.TableName; } override protected void OnInit(EventArgs e) { base.OnInit(e); //this.retreive(); } public void this_RowEditing(object sender, GridViewEditEventArgs e) { this.EditIndex = e.NewEditIndex; this.DataBind(); HttpContext.Current.Session["SelecetdRowIndex"] = e.NewEditIndex; } public void this_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { this.EditIndex = -1; this.DataBind(); HttpContext.Current.Session["SelecetdRowIndex"] = -1; } protected void this_RowDeleting(object sender, GridViewDeleteEventArgs e) { string Query = WebUtil.GenerateDeleteQuery(e.RowIndex, Table, this.TableName); try { MsgSQL = Query; WebUtil.ExeSQL(Query); this.MsgText = "Delete successful "; } catch (Exception se) { this.MsgError = "Delete Error : "+se.Message; HttpContext.Current.Session["GridErrorMsg"] = this.MsgText + ",SQL=" + MsgSQL+",Error="+MsgError; } CreateTemplatedGridView(this.TableName); } public void this_RowUpdating(Object sender, GridViewUpdateEventArgs e) { GridViewRow row = this.Rows[e.RowIndex]; for (int i = 0; i < Table.Columns.Count; i++) { string field_value = ((TextBox)row.FindControl(Table.Columns[i].ColumnName)).Text; ParameterArray.Add(field_value); } string Query = ""; if ((int)HttpContext.Current.Session["InsertFlag"] == 1) Query = WebUtil.GenerateInsertQuery(Table, TableName, ParameterArray); else Query = WebUtil.GenerateUpdateQuery(Table, TableName, ParameterArray); //SqlCommand Command = new System.Data.SqlClient.SqlCommand(Query, Connection); try { MsgSQL = Query; WebUtil.ExeSQL(Query); HttpContext.Current.Session["InsertFlag"] = (int)HttpContext.Current.Session["InsertFlag"] == 1 ? 0 : 1; this.MsgText = "Update successful "; } catch (Exception se) { this.MsgText = "Update Error : " + se.Message; HttpContext.Current.Session["GridErrorMsg"] = this.MsgText + "SQL=" + MsgSQL + ",Error=" + MsgError; } this.EditIndex = -1; CreateTemplatedGridView(this.TableName); } protected void this_PageIndexChanging(object sender, EventArgs e) { //CreateTemplatedGridView(); this.PageIndex = ((GridViewPageEventArgs)e).NewPageIndex; this.DataBind(); } public void PopulateDataTable() { //this.TableName=TableName ; this.Columns.Clear(); String sql = "select * from " + TableName; Table = WebUtil.Query(sql); //MsgSQL = Query; } public void retreive() { try { if (HttpContext.Current.Session["TableSelected"] != null) TableName = (String)HttpContext.Current.Session["TableSelected"]; this.CreateTemplatedGridView(TableName); } catch { } } public void retreive(string TableName) { this.CreateTemplatedGridView(TableName); } public void CreateTemplatedGridView(string TableName) { // fill the table which is to bound to the GridView this.AutoGenerateColumns = false; this.AllowPaging = true; this.AllowSorting = true; this.PopulateDataTable(); // add templated fields to the GridView TemplateField BtnTmpField = new TemplateField(); BtnTmpField.ItemTemplate = new DynamicallyTemplatedGridViewHandler(ListItemType.Item, "...", "Command"); BtnTmpField.HeaderTemplate = new DynamicallyTemplatedGridViewHandler(ListItemType.Header, "...", "Command"); BtnTmpField.EditItemTemplate = new DynamicallyTemplatedGridViewHandler(ListItemType.EditItem, "...", "Command"); this.Columns.Add(BtnTmpField); for (int i = 0; i < Table.Columns.Count; i++) { TemplateField ItemTmpField = new TemplateField(); // create HeaderTemplate ItemTmpField.HeaderTemplate = new DynamicallyTemplatedGridViewHandler(ListItemType.Header, Table.Columns[i].ColumnName, Table.Columns[i].DataType.Name); // create ItemTemplate ItemTmpField.ItemTemplate = new DynamicallyTemplatedGridViewHandler(ListItemType.Item, Table.Columns[i].ColumnName, Table.Columns[i].DataType.Name); //create EditItemTemplate ItemTmpField.EditItemTemplate = new DynamicallyTemplatedGridViewHandler(ListItemType.EditItem, Table.Columns[i].ColumnName, Table.Columns[i].DataType.Name); // then add to the GridView this.Columns.Add(ItemTmpField); } // bind and display the data this.DataSource = Table; this.DataBind(); this.RowEditing += new GridViewEditEventHandler(this_RowEditing); this.RowCancelingEdit += new GridViewCancelEditEventHandler(this_RowCancelingEdit); this.RowUpdating += new GridViewUpdateEventHandler(this_RowUpdating); this.RowDeleting += new GridViewDeleteEventHandler(this_RowDeleting); this.PageIndexChanging += new GridViewPageEventHandler(this_PageIndexChanging); } } }