手工实现GridView排序、删除、编辑、新增数据功能
2009-04-11 14:09
881 查看
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; using System.Data.SqlClient; using System.Data.Sql; /// <summary> /// 手动实现GridView的数据插入、更新、排序、删除功能 /// 此作业烦恼我多日,终于完成,功能完全,异常处理也完善了,仅未作SQL注入处理 /// 开发环境 VS2008 ,数据库名:manualDB,表名:student,更换环境,请注意修改表定义和数据库连接串 /// </summary> public partial class _Default : System.Web.UI.Page { /// <summary> /// 页面预载入,初始化排序和数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { ViewState["SortOrder"] = "StudentId";//通过视图保存状态 ViewState["OrderDire"] = "ASC"; bind(); } } /// <summary> /// 数据绑定方法,通过视图进行数据的排序 /// </summary> protected void bind() { DataSet ds = new DataSet(); string commandText = "select * from student"; SqlConnection conn = getConn(); SqlDataAdapter sqlad = new SqlDataAdapter(commandText, conn); try { sqlad.Fill(ds, "student"); DataView view = ds.Tables["student"].DefaultView; string sort = (string)ViewState["SortOrder"] + " " + (string)ViewState["OrderDire"]; view.Sort = sort; GridView1.DataSource = view; GridView1.DataKeyNames = new string[] { "StudentId" }; //标识出表主键,后面会用到取主键值 GridView1.DataBind(); sqlad.Dispose(); //适配器资源释放 conn.Close(); } catch (Exception err) { Response.Write("读取数据失败,错误信息:" + err.Message); } } /// <summary> /// 行数据删除方法 /// </summary> /// <param name="sender"></param> /// <param name="e">e为触发删除事件的源</param> protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { SqlConnection conn = getConn(); string commandText = "delete student where StudentId='"+GridView1.DataKeys[e.RowIndex].Value.ToString()+"'"; SqlCommand sqlcom = new SqlCommand(commandText, conn); /* * 异常处理,下同:如果SQL顺利执行,但影响数据位0,则提示失败,否则打印错误信息 */ try { conn.Open(); int i=sqlcom.ExecuteNonQuery(); if (i <= 0) Response.Write("<mce:script language=javascript><!-- alert(创建失败!') // --></mce:script>");//查询结果影响数为0 conn.Close(); } catch (Exception err) { Response.Write("删除失败,错误信息:" + err.Message); } bind(); } /// <summary> /// 行编辑方法,仅改变 GridView状态 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; bind(); } /// <summary> /// 行编辑取消方法 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; bind(); } /// <summary> /// 行数据更新方法 /// </summary> /// <param name="sender"></param> /// <param name="e">通过e取得当前行的新值</param> protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { string name = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text.ToString().Trim(); string sex = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text.ToString().Trim(); string telephone = ((TextBox)GridView1.Rows[e.RowIndex].Cells[4].Controls[0]).Text.ToString().Trim(); string comtext = "update student set name='"+name+"',sex='"+sex+"',telephone='"+telephone+"' where StudentId='"+GridView1.DataKeys[e.RowIndex].Value.ToString()+"'"; SqlConnection conn = getConn(); SqlCommand sqlcom = new SqlCommand(comtext,conn); try { conn.Open(); int i=sqlcom.ExecuteNonQuery(); if (i <= 0) Response.Write("<mce:script language=javascript><!-- alert(创建失败!') // --></mce:script>"); conn.Close(); } catch (Exception err) { Response.Write("更新数据失败,错误信息:" + err.Message); } GridView1.EditIndex = -1; bind(); } /// <summary> /// 排序方法,如果为升序排列,则按降序排,反之亦然 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) { string sPage = e.SortExpression; if (ViewState["SortOrder"].ToString() == sPage) { if (ViewState["OrderDire"].ToString() == "Desc") ViewState["OrderDire"] = "ASC"; else ViewState["OrderDire"] = "Desc"; } else { ViewState["SortOrder"] = e.SortExpression; } bind(); } /// <summary> /// 通用方法,获取一个数据库连接 /// </summary> /// <returns></returns> protected SqlConnection getConn() { string connString = "Data Source=MIRROR-PC//SQLEXPRESS;Initial Catalog=manualDB;Integrated Security=True;Pooling=False"; SqlConnection conn = new SqlConnection(connString); return conn; } /// <summary> /// 新增数据方法,增加完毕后重置文本框为空 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void 新增_Click(object sender, EventArgs e) { string commdstr = "insert into student(name,sex,telephone) values('" + TextBox4.Text + "','" + TextBox2.Text + "','" + TextBox3.Text+ "')"; SqlConnection conn = getConn(); SqlCommand sqlcom = new SqlCommand(commdstr, conn); try { conn.Open(); int i= sqlcom.ExecuteNonQuery(); if (i <= 0) Response.Write("<mce:script language=javascript><!-- alert(创建失败!') // --></mce:script>"); conn.Close(); } catch (Exception err) { Response.Write("创建失败,错误信息:"+err.Message); } bind(); TextBox3.Text = "";TextBox4.Text = ""; TextBox2.Text = ""; } }
一个C#的课后作业,不过我做了很久才弄好。。比较笨吧。
相关文章推荐
- 手工实现GridView排序、删除、编辑、新增数据功能
- GridView绑定手工数据源的数据操作(编辑,删除,排序)
- Repeater\DataList\GridView实现分页,数据编辑与删除
- GridView 实现自定义分页、排序、查询、添加、编辑、多选删除
- 使用gridview实现编辑、更新、取消功能和删除功能
- GridView控件与CheckBox结合,实现全选功能,同时实现删除选中的多行数据 .
- 自定义商品数据,实现对商品的过滤、排序和删除功能
- 小案例:实现对web端对客户的添加,编辑,删除等数据功能
- Repeater\DataList\GridView实现分页,数据编辑与删除
- GridView实现编辑,选择删除,分页功能
- gridview 实现自定义分页、排序、查询、添加、编辑、多选删除 之代码规范
- 手动绑定数据到GridView并实现编辑,删除,取消···
- Repeater\DataList\GridView实现分页,数据编辑与删除
- GridView实现 "插入" 编辑更新删除功能
- 如何利用GridView与UpdatePanel组合实现无刷新:新增、编辑、删除、分页效果?
- 如何实现GridView的选中,编辑,取消,删除功能
- 使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
- 手动绑定数据到GridView并实现编辑,删除,取消···
- 手动绑定数据到GridView并实现编辑,删除,取消···