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);
}
}
}