GridView列表中直接在当前行可修改、删除是很方便的,类似与winform的直观。本示例就是借助GridView自带修改删除功能,实现TextBox和DropDownList控件的结合,DropDownList的数据来自数据库,并选中可选项。ShowDeleteButton=true实现删除时,使用DeleteText实现删除前的提示框确认。
图示:
编辑前
编辑后的编辑图示
删除确认对话框
gridviewUp.aspx代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="gridviewUp.aspx.cs" Inherits="gridviewUp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.bubufxPagerCss table
{
text-align: center;
margin: auto;
}
.bubufxPagerCss table td
{
border: 0px;
padding: 5px;
}
.bubufxPagerCss td
{
border-left: #ffffff 3px solid;
border-right: #ffffff 3px solid;
border-bottom: #ffffff 3px solid;
}
.bubufxPagerCss a
{
color: #231815;
text-decoration: none;
padding: 3px 6px 3px 6px;
margin: 0 0 0 4px;
text-align: center;
border: 1px solid #ac1f24;
}
.bubufxPagerCss span
{
color: #fefefe;
background-color: #ac1f24;
padding: 3px 6px 3px 6px;
margin: 0 0 0 4px;
text-align: center;
font-weight: bold;
border: 1px solid #ac1f24;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" AllowPaging="True"
EmptyDataText="没有数据记录!!" OnPageIndexChanging="GridView1_PageIndexChanging" OnRowCancelingEdit="GridView1_RowCancelingEdit"
OnRowDataBound="GridView1_RowDataBound" OnRowDeleting="GridView1_RowDeleting"
OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
<Columns>
<asp:BoundField HeaderText="编号" DataField="ID" ReadOnly="true" />
<asp:BoundField HeaderText="姓名" FooterText="姓名" DataField="name" SortExpression="name"
ReadOnly="true" />
<asp:TemplateField HeaderText="职位">
<ItemTemplate>
<asp:HiddenField ID="hfID" runat="server" Value=’<%# Eval("ID") %>’ />
<%# Eval("zhiweiName")%>
</ItemTemplate>
<EditItemTemplate>
<asp:HiddenField ID="hfID" runat="server" Value=’<%# Eval("ID") %>’ />
<asp:HiddenField ID="hfZhiwei" runat="server" Value=’<%# Eval("zhiweiID") %>’ />
<asp:DropDownList ID="ddlZhiwei" runat="server" Width="90px" />
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="身份证号">
<ItemTemplate>
<%# Eval("card")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="tbcard" Text=’<%# Eval("card") %>’ runat="server" Width="150px" />
</EditItemTemplate>
<ItemStyle Width="100px" />
</asp:TemplateField>
<asp:BoundField HeaderText="时间" FooterText="时间" DataField="createtime" SortExpression="createtime"
ReadOnly="true" />
<asp:CommandField ShowEditButton="True" />
<asp:CommandField ShowDeleteButton="True" DeleteText="<div onclick="JavaScript:return confirm(’bubufx.com提醒您,确认要删除吗?’)">删除<div/>" />
</Columns>
<PagerSettings FirstPageText="首页" LastPageText="末页" NextPageText="下一页" PageButtonCount="5"
PreviousPageText="上一页" Mode="NumericFirstLast" />
<PagerStyle BorderColor="#66FF66" Font-Names="宋体" Font-Size="12px" HorizontalAlign="Center"
CssClass="bubufxPagerCss" />
</asp:GridView>
</div>
</form>
</body>
</html>
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();
}
}
/// <summary>
/// 绑定数据
/// </summary>
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();
}
/// <summary>
/// “编辑”按钮按下时,将当前行设置为可编辑状态
/// </summary>
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
dataBind();
}
/// <summary>
/// “更新”按钮按下时,保存当前行的更改
/// </summary>
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();
}
}
/// <summary>
/// “取消”按钮按下时,取消当前行的编辑状态
/// </summary>
protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
GridView1.EditIndex = -1;
dataBind();
}
/// <summary>
/// “删除”按钮按下后,删除当前行
/// </summary>
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();
}
}
/// <summary>
/// 行绑定时的处理,其中包括DropDownList的可选项绑定,和选中当前可选项
/// </summary>
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;
//
}
}
}
直接复制以上代码还不能完全运行,还需要数据库操作类DB,可点击到这里查看。
数据库是两个表,数据列表和职位列表。
gridviewTestTable表:
zhiwei表:
GridView数据修改、删除,修改控件TextBox和DropDownList,删除ShowDeleteButton=true提示删除确认[asp.net基础]