GridView在线编辑纯手工打造
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://wangjierui.blog.51cto.com/186879/47650 |
当愚蠢的方式奏效的时候,它就不是愚蠢的。——《美国士兵手册》
作者前言:
在动态网页(我是指服务器脚本编程)纯手工年代,工作量是大,但控制起来非常精确,我称之为手术刀式编程。而今,在利润支配技术的年代,一夜之间“软件复用”“框架”“平台”“面向XX”雨后春笋……我并不反对城市扩张占用农田,也并不支持为了保护野生动物而放弃现代文明,我只是不想发生这样一幕:当一名程序员苦于实现一个功能的时候,怪罪于微软没有提供相应的控件,或者归咎于网上没有人贴出源代码。要知道,世界上最贵的奢侈品大多是纯手工制作。
这里是一个页面的codebehind代码,献丑了:
在线编辑.aspx.cs
using System;
using System.Data; using System.Configuration; using System.Collections; 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; public partial class GridView_在线编辑 : System.Web.UI.Page
{ /// <summary> /// 构建数据源 /// 请根据自己的情况修改 /// </summary> /// <returns></returns> private DataTable InitTable() { DataTable dt = new DataTable("testtable"); DataColumn dc = new DataColumn("ID", typeof(String)); dt.Columns.Add(dc); dc = new DataColumn("Sex", typeof(String)); dt.Columns.Add(dc); DataRow dr = dt.NewRow();
dr["ID"] = "001"; dr["Sex"] = "0"; dt.Rows.Add(dr); dr = dt.NewRow();
dr["ID"] = "002"; dr["Sex"] = "0"; dt.Rows.Add(dr); dr = dt.NewRow();
dr["ID"] = "003"; dr["Sex"] = "0"; dt.Rows.Add(dr); dr = dt.NewRow();
dr["ID"] = "004"; dr["Sex"] = "0"; dt.Rows.Add(dr); return dt;
} /// <summary> /// 数据绑定 /// </summary> private void BindDataa() { GridView1.DataSource = InitTable(); GridView1.DataBind(); } protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { GridView1.DataSource = InitTable(); GridView1.DataBind(); } } /// <summary> /// 编辑按钮按下时 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btEdit_Click(object sender, EventArgs e) { Button rowbutton = sender as Button; GridView1.EditIndex = Convert.ToInt32(rowbutton.CommandArgument); BindDataa(); } protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{ if (e.Row.RowType == DataControlRowType.DataRow) { if (e.Row.RowIndex != GridView1.EditIndex) { Button edit = e.Row.FindControl("btEdit") as Button; edit.CommandArgument = e.Row.RowIndex.ToString(); }
else { DataRowView drv = e.Row.DataItem as DataRowView; RadioButtonList sex = e.Row.FindControl("RadioButtonList1") as RadioButtonList; sex.SelectedValue = drv["Sex"].ToString(); } } } /// <summary> /// 取消按钮按下时 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btCancel_Click(object sender, EventArgs e) { GridView1.EditIndex = -1; BindDataa(); } /// <summary> /// 确定按钮按下时 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btOK_Click(object sender, EventArgs e) { //主键获取,GridView普通用法,在此不赘述 string key = GridView1.DataKeys[GridView1.EditIndex].Value.ToString(); //获取用户输入 GridViewRow gvr = GridView1.Rows[GridView1.EditIndex]; TextBox userID = gvr.FindControl("tbID") as TextBox; string id = userID.Text; RadioButtonList userSex = gvr.FindControl("RadioButtonList1") as RadioButtonList;
string sex = userSex.SelectedValue; //====在这里做你想要做的事情,比如更新数据库什么的====== //恢复到浏览状态 GridView1.EditIndex = -1; BindDataa(); } } 在线编辑.aspx
<form id="form1" runat="server">
<div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridView1_RowDataBound" DataKeyNames="id"> <Columns> <asp:TemplateField HeaderText="Operation"> <EditItemTemplate> <asp:Button ID="btOK" runat="server" Text="OK" Width="55px" OnClick="btOK_Click" /> <asp:Button ID="btCancel" runat="server" Text="Cancel" OnClick="btCancel_Click" /> </EditItemTemplate> <ItemTemplate> <asp:Button ID="btEdit" runat="server" Text="Edit" Width="55px" OnClick="btEdit_Click" /> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="ID"> <EditItemTemplate> <asp:TextBox ID="tbID" runat="server" Text='<%# Bind("ID") %>'></asp:TextBox> </EditItemTemplate> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("ID") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Sex"> <EditItemTemplate> <asp:RadioButtonList ID="RadioButtonList1" runat="server" RepeatDirection="Horizontal"> <asp:ListItem Value="0">Boy</asp:ListItem> <asp:ListItem Value="1">Girl</asp:ListItem> </asp:RadioButtonList> </EditItemTemplate> <ItemTemplate> <asp:Label ID="lSex" runat="server" Text='<%# Bind("sex") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> </div> <asp:Button ID="Button1" runat="server" Text="Button" /> </form> (完) 本文出自 “王杰瑞的技术博客” 博客,请务必保留此出处http://wangjierui.blog.51cto.com/186879/47650 本文出自 51CTO.COM技术博客 |



王杰瑞
博客统计信息
热门文章
最新评论
友情链接