这段时间一直在搞asp.net 2.0和C#发现了2.0和以前的版本有很大的不同,下面是我对GridView动态捆绑用法的一些心得,写出来一起探讨:
首先我假设我们要动态捆绑的一个类是一个查询的类定义为一个叫SearchFunction()的,然后我们双击分页的事件GridView1_PageIndexChanging:
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex = e.NewPageIndex;
SearchFunction();
}
而编辑的事件GridView1_RowEditing:
{
GridView1.PageIndex = e.NewPageIndex;
SearchFunction();
}
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
SearchFunction();
}
关闭编辑事件GridView1_RowCancelingEdit
{
GridView1.EditIndex = e.NewEditIndex;
SearchFunction();
}
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
SearchFunction();
}
还有排序的时间GridView1_Sorting首先在刚刚load的时候添加
{
GridView1.EditIndex = -1;
SearchFunction();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
ViewState["sortColumn"] = " ";
ViewState["sortDirection"] = " ";
}
}
然后在事件里填写:{
if (!Page.IsPostBack)
{
ViewState["sortColumn"] = " ";
ViewState["sortDirection"] = " ";
}
}
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
GridView1.EditIndex = -1;
if (ViewState["sortColumn"].ToString() == e.SortExpression.ToString())
{
if ("ASC" == ViewState["sortDirection"].ToString())
{
ViewState["sortDirection"] = "DESC";
}
else
{
ViewState["sortDirection"] = "ASC";
}
}
else
{
ViewState["sortColumn"] = e.SortExpression.ToString();
ViewState["sortDirection"] = "ASC";
}
//sql是要查询的数据的内容
sql += " order by " + ViewState["sortColumn"].ToString() + " " + ViewState["sortDirection"].ToString();
this.Session["sql"] = sql;
using (DataSet dr = SQL.exesql(sql, "sql"))
{
GridView1.DataSource = dr.Tables["sql"];
GridView1.AutoGenerateEditButton = true;
GridView1.AutoGenerateDeleteButton = true;
GridView1.DataBind();
}
}
{
GridView1.EditIndex = -1;
if (ViewState["sortColumn"].ToString() == e.SortExpression.ToString())
{
if ("ASC" == ViewState["sortDirection"].ToString())
{
ViewState["sortDirection"] = "DESC";
}
else
{
ViewState["sortDirection"] = "ASC";
}
}
else
{
ViewState["sortColumn"] = e.SortExpression.ToString();
ViewState["sortDirection"] = "ASC";
}
//sql是要查询的数据的内容
sql += " order by " + ViewState["sortColumn"].ToString() + " " + ViewState["sortDirection"].ToString();
this.Session["sql"] = sql;
using (DataSet dr = SQL.exesql(sql, "sql"))
{
GridView1.DataSource = dr.Tables["sql"];
GridView1.AutoGenerateEditButton = true;
GridView1.AutoGenerateDeleteButton = true;
GridView1.DataBind();
}
}
还有就是更新的事件GridView1_RowUpdating:
GridViewRow row = GridView1.Rows[e.RowIndex];
TextBox test = (TextBox)row.Cells[1].Controls[0] as TextBox;
TextBox test1 = (TextBox)row.Cells[2].Controls[0] as TextBox;
TextBox test2 = (TextBox)row.Cells[3].Controls[0] as TextBox;
TextBox test3 = (TextBox)row.Cells[4].Controls[0] as TextBox;
..
TextBox testx = (TextBox)row.Cells[y].Controls[0] as TextBox;
//这里是关键获取前面GridView的元素的值;
//获取后就可以根据你要更新的内容来更新
这是我对动态GridView的一些用法的看法,希望大家一起来讨论;
TextBox test = (TextBox)row.Cells[1].Controls[0] as TextBox;
TextBox test1 = (TextBox)row.Cells[2].Controls[0] as TextBox;
TextBox test2 = (TextBox)row.Cells[3].Controls[0] as TextBox;
TextBox test3 = (TextBox)row.Cells[4].Controls[0] as TextBox;
..
TextBox testx = (TextBox)row.Cells[y].Controls[0] as TextBox;
//这里是关键获取前面GridView的元素的值;
//获取后就可以根据你要更新的内容来更新