GridView在线编辑纯手工打造

简介:
当愚蠢的方式奏效的时候,它就不是愚蠢的。——《美国士兵手册》
 
作者前言:
在动态网页(我是指服务器脚本编程)纯手工年代,工作量是大,但控制起来非常精确,我称之为手术刀式编程。而今,在利润支配技术的年代,一夜之间“软件复用”“框架”“平台”“面向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>
                        &nbsp;
                        <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>
 
(完)









本文转自 王杰瑞 51CTO博客,原文链接:http://blog.51cto.com/wangjierui/47650,如需转载请自行联系原作者
目录
相关文章
|
存储 JSON 前端开发
魔鱼搭投编辑器 ,一款优秀的前端界面可视化工具
魔鱼搭投编辑器 ,一款优秀的前端界面可视化工具
154 1
|
12月前
|
BI 数据库连接
机房收费系统——报表下载及模板制作
机房收费系统——报表下载及模板制作
|
开发工具 UED 开发者
在微信小游戏制作工具中实现各种效果和功能的按钮
在游戏设计中有一个名词叫“反馈”,大体就是指当玩家在进行游戏时,游戏所给予玩家的一些东西,比如常见的在点击按钮时,按钮会变换颜色,或进行缩放,或播放音效等等。总之,不论玩家在游戏中进行任何的操作,游戏都应该给予玩家一个合理的反馈。让玩家能够明白他的操作所获得的结果是什么。
325 0
|
前端开发
前端工作总结273-处理预览界面
前端工作总结273-处理预览界面
111 0
|
前端开发
前端工作总结102-富文本查看 编辑状态显示
前端工作总结102-富文本查看 编辑状态显示
85 0
|
JSON 移动开发 JavaScript
快速搭建一个代码在线编辑预览工具
快速搭建一个代码在线编辑预览工具
425 0
快速搭建一个代码在线编辑预览工具
这份菜单能修改吗;这份菜单可以修改;菜名和价格的展示;菜单的信息量好大
某平台实训 python这份菜单能修改吗;这份菜单可以修改;菜名和价格的展示;菜单的信息量好大
|
安全 数据可视化 网络协议
Excel用户的福音:不用写代码就能开发一个带界面的程序!
2015年,微软内部一个项目悄悄开始开发,主要目的是解决「Excel用户」不想编程,重复劳动多,下班晚等问题。2021年,这个项目终于来了,让不会写代码的你也能驯化计算机!
163 0
Excel用户的福音:不用写代码就能开发一个带界面的程序!
|
Java 数据安全/隐私保护
JSP+Servlet培训班作业管理系统[3]–点击菜单加载功能页面
本文目录 1. 背景 2. 创建演示页面 3. 构造超级链接 4. 实现jsp页面的动态包含 4.1 修改左侧菜单部分的超级链接。 4.2 创建用于导航的servlet 4.3 右侧区域动态包含 5. 测试验证
226 0
|
C# Windows
WPF 自定义图片剪切器 - 头像剪切(扩展与完善、实时截图)
原文:WPF 自定义图片剪切器 - 头像剪切(扩展与完善、实时截图) 一、说明:上一次写的”WPF 自定义图片剪切器 - 头像剪切。
1289 0