GridView数据修改、删除,修改控件TextBox和DropDownList,删除ShowDeleteButton=true提示删除确认[asp.net基础]
GridView列表中直接在当前行可修改、删除是很方便的,类似与winform的直观。本示例就是借助GridView自带修改删除功能,实现TextBox和DropDownList控件的结合,DropDownList的数据来自数据库,并选中可选项。ShowDeleteButton=true实现删除时,使用DeleteText实现删除前的提示框确认。
图示:
编辑前
编辑后的编辑图示
删除确认对话框
gridviewUp.aspx代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="gridviewUp.aspx.cs" Inherits="gridviewUp" %>gridviewUp.aspx.cs代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; public partial class gridviewUp : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { dataBind(); } } ///直接复制以上代码还不能完全运行,还需要数据库操作类DB,。/// 绑定数据 /// private void dataBind() { DB _db = new DB(); string _sql = "select a.*,b.zhiweiName from gridviewTestTable a,zhiwei b where a.zhiweiID=b.ID"; DataTable _DT = _db.GetDt(_sql); GridView1.DataSource = _DT; GridView1.DataBind(); } protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { GridView1.PageIndex = e.NewPageIndex; dataBind(); } ////// “编辑”按钮按下时,将当前行设置为可编辑状态 /// protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) { GridView1.EditIndex = e.NewEditIndex; dataBind(); } ////// “更新”按钮按下时,保存当前行的更改 /// protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) { string id = ((HiddenField)GridView1.Rows[e.RowIndex].FindControl("hfID")).Value; string zhiwei = ((DropDownList)GridView1.Rows[e.RowIndex].FindControl("ddlZhiwei")).SelectedValue; string card = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("tbcard")).Text; string sql = "update gridviewTestTable set card=’" + card + "’,zhiweiID=’" + zhiwei + "’ where id=" + id; DB _db = new DB(); int flag = _db.RunSql(sql); if (flag == 1) { GridView1.EditIndex = -1; dataBind(); } else { Response.Write("修改异常!"); Response.End(); } } ////// “取消”按钮按下时,取消当前行的编辑状态 /// protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e) { GridView1.EditIndex = -1; dataBind(); } ////// “删除”按钮按下后,删除当前行 /// protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e) { string id = ((HiddenField)GridView1.Rows[e.RowIndex].FindControl("hfID")).Value; string sql = "delete from gridviewTestTable where ID=" + id; DB _db = new DB(); int flag = _db.RunSql(sql); if (flag == 1) { GridView1.EditIndex = -1; dataBind(); } else { Response.Write("删除异常!"); Response.End(); } } ////// 行绑定时的处理,其中包括DropDownList的可选项绑定,和选中当前可选项 /// protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowState == DataControlRowState.Edit) //判断当前行是否是“编辑”行 { DropDownList ddlZhiwei = (DropDownList)e.Row.FindControl("ddlZhiwei"); //绑定DropDownList数据 DB _db = new DB(); string _sql = "select * from zhiwei order by ID"; DataTable _DT = _db.GetDt(_sql); ddlZhiwei.DataSource = _DT; ddlZhiwei.DataTextField = "zhiweiName"; ddlZhiwei.DataValueField = "ID"; ddlZhiwei.DataBind(); // //选中DropDownList ddlZhiwei.SelectedValue = ((HiddenField)e.Row.FindControl("hfZhiwei")).Value; // } } }
数据库是两个表,数据列表和职位列表。
gridviewTestTable表:
zhiwei表: