文档章节

GridView动态新增行 删除行 适合多数据批量修改保存 新增数据验证

深圳大道
 深圳大道
发布于 2016/12/29 15:38
字数 960
阅读 6
收藏 0
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Demo.aspx.cs" Inherits="Demo" %>
<!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" width="80px">
    <title>GridView动态新增行 批量编辑保存</title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <div>
                <asp:Button ID="btnAdd" runat="server" Text="新增行" OnClick="btnAdd_Click" />  
                <asp:Button ID="btnSave" runat="server" Text="保存数据" OnClick="btnSave_Click" />
                <br/>新增验证:控件宽度和高度为 非0的正整数<br/>
                <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" OnRowDeleting="GridView1_RowDeleting">
                    <Columns>
                        <asp:CommandField ShowDeleteButton="True" />
                        <asp:TemplateField HeaderText="字段名">
                            <ItemTemplate>
                                <asp:Label ID="lblPKID" runat="server" Text='<%# Container.DataItemIndex%>' Visible="false"></asp:Label>
                                <asp:TextBox ID="txtFieldName" runat="server" Width="80px"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="显示名">
                            <ItemTemplate>
                                <asp:TextBox ID="txtFieldTipName" runat="server" Width="80px"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="主键">
                            <ItemTemplate>
                                <asp:DropDownList ID="ddlIsPK" runat="server" Width="80px">
                                    <asp:ListItem Text="否" Value="0" Selected="True"></asp:ListItem>
                                    <asp:ListItem Text="是" Value="1"></asp:ListItem>
                                </asp:DropDownList>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="可编辑">
                            <ItemTemplate>
                                <asp:DropDownList ID="ddlIsEdit" runat="server" Width="80px">
                                    <asp:ListItem Text="否" Value="0" Selected="True"></asp:ListItem>
                                    <asp:ListItem Text="是" Value="1"></asp:ListItem>
                                </asp:DropDownList>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="页面显示">
                            <ItemTemplate>
                                <asp:DropDownList ID="ddlIsShow" runat="server" Width="80px">
                                    <asp:ListItem Text="否" Value="0" Selected="True"></asp:ListItem>
                                    <asp:ListItem Text="是" Value="1"></asp:ListItem>
                                </asp:DropDownList>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="列表显示">
                            <ItemTemplate>
                                <asp:DropDownList ID="ddlIsListShow" runat="server" Width="80px">
                                    <asp:ListItem Text="否" Value="0" Selected="True"></asp:ListItem>
                                    <asp:ListItem Text="是" Value="1"></asp:ListItem>
                                </asp:DropDownList>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="字段排序">
                            <ItemTemplate>
                                <asp:TextBox ID="txtFieldSort" runat="server" Width="80px"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="控件类别">
                            <ItemTemplate>
                                <asp:DropDownList ID="ddlFieldControl" runat="server" Width="80px">
                                    <asp:ListItem Text="Label" Value="Label" Selected="True"></asp:ListItem>
                                    <asp:ListItem Text="TextBox" Value="TextBox"></asp:ListItem>
                                    <asp:ListItem Text="RadioButtonList" Value="RadioButtonList"></asp:ListItem>
                                    <asp:ListItem Text="CheckBoxList" Value="CheckBoxList"></asp:ListItem>
                                </asp:DropDownList>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="值组合">
                            <ItemTemplate>
                                <asp:TextBox ID="txtMutiArray" runat="server" Width="80px"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="控件宽度">
                            <ItemTemplate>
                                <asp:TextBox ID="txtControlWidth" runat="server" Width="80px"></asp:TextBox>
                                <asp:RegularExpressionValidator ID="Rev1" runat="server" ErrorMessage="*" ForeColor="Red" ControlToValidate="txtControlWidth" ValidationExpression="^\+?[1-9][0-9]*$" ></asp:RegularExpressionValidator>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="控件高度">
                            <ItemTemplate>
                                <asp:TextBox ID="txtControlHeight" runat="server" Width="80px"></asp:TextBox>
                                <asp:RegularExpressionValidator ID="Rev2" runat="server" ErrorMessage="*" ForeColor="Red" ControlToValidate="txtControlHeight" ValidationExpression="^\+?[1-9][0-9]*$"></asp:RegularExpressionValidator>
                            </ItemTemplate>
                        </asp:TemplateField>
                        <asp:TemplateField HeaderText="备注">
                            <ItemTemplate>
                                <asp:TextBox ID="txtFieldRemark" runat="server" Width="80px"></asp:TextBox>
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                </asp:GridView>
            </div>
            <asp:Label ID="Label1" runat="server" ></asp:Label>
        </ContentTemplate>
    </asp:UpdatePanel>
    </form>
</body>
</html>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Demo : System.Web.UI.Page
{
    #region 页面加载
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            CreateTable();
            BindTestData();
        }
    }
    #endregion 

    #region 创建测试数据且绑定
    protected DataTable CreateTable()
    {
        //模拟出一些原始数据绑定DataGrid 
        DataTable dt1 = new DataTable("FieldTable");
        //不设置 默认为System.String
        dt1.Columns.Add("FieldName");
        dt1.Columns.Add("FieldTipName");
        dt1.Columns.Add("IsPK");
        dt1.Columns.Add("IsEdit");

        dt1.Columns.Add("IsShow");
        dt1.Columns.Add("IsListShow");
        dt1.Columns.Add("FieldSort");
        dt1.Columns.Add("FieldControl");
        dt1.Columns.Add("MutiArray");

        dt1.Columns.Add("ControlWidth");
        dt1.Columns.Add("ControlHeight");
        dt1.Columns.Add("FieldRemark");

        dt1.Rows.Add(dt1.NewRow());
        ViewState["ViewDT"] = dt1;
        return dt1;
    }

    protected void BindTestData()
    {
        this.GridView1.DataSource = ViewState["ViewDT"] as DataTable;
        this.GridView1.DataBind();
    }
    #endregion 

    #region 新增行
    protected void btnAdd_Click(object sender, EventArgs e)
    {
        DataTable dt1 = (DataTable)ViewState["ViewDT"];
        //Add new row
        dt1.Rows.Add(dt1.NewRow());
        ViewState["ViewDT"] = dt1;
        BindTestData();
    }
    #endregion 

    #region 删除行
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int PKID = Convert.ToInt32(((Label)GridView1.Rows[e.RowIndex].FindControl("lblPKID")).Text);
        DataTable tbCategory = (DataTable)ViewState["ViewDT"];
        try { tbCategory.Rows.RemoveAt(PKID); }
        catch { }        
        ViewState["ViewDT"] = tbCategory;
        BindTestData();
    }
    #endregion 

    #region 保存修改
    protected void btnSave_Click(object sender, EventArgs e)
    {
        //批量修改后保存数据
        if (GridView1.Rows.Count > 0)
        {
            Label1.Text = "";
            System.Text.StringBuilder builder = new System.Text.StringBuilder();
            for (int i = 0; i < GridView1.Rows.Count; i++)
            {
                string PKID = ((Label)GridView1.Rows[i].FindControl("lblPKID")).Text;
                string FieldName = ((TextBox)GridView1.Rows[i].FindControl("txtFieldName")).Text;

                string FieldTipName = ((TextBox)GridView1.Rows[i].FindControl("txtFieldTipName")).Text;
                string IsPK = ((DropDownList)GridView1.Rows[i].FindControl("ddlIsPK")).SelectedValue;
                string IsEdit = ((DropDownList)GridView1.Rows[i].FindControl("ddlIsEdit")).SelectedValue;
                string IsShow = ((DropDownList)GridView1.Rows[i].FindControl("ddlIsShow")).SelectedValue;

                string IsListShow = ((DropDownList)GridView1.Rows[i].FindControl("ddlIsListShow")).SelectedValue;
                string FieldSort = ((TextBox)GridView1.Rows[i].FindControl("txtFieldSort")).Text;
                string FieldControl = ((DropDownList)GridView1.Rows[i].FindControl("ddlFieldControl")).SelectedValue;
                string MutiArray = ((TextBox)GridView1.Rows[i].FindControl("txtMutiArray")).Text;

                string ControlWidth = ((TextBox)GridView1.Rows[i].FindControl("txtControlWidth")).Text;
                string ControlHeight = ((TextBox)GridView1.Rows[i].FindControl("txtControlHeight")).Text;
                string FieldRemark = ((TextBox)GridView1.Rows[i].FindControl("txtFieldRemark")).Text;
                builder.AppendLine(PKID + "____" + FieldName + "____"
                    + FieldTipName + "____" + IsPK + "____" + IsEdit + "____" + IsShow
                    + "____" + IsListShow + "____" + FieldSort + "____" + FieldControl
                    + "____" + MutiArray + "____" + ControlWidth + "____" + ControlHeight
                    + "____" + "____" + FieldRemark + "<br/>");
            }
            Label1.Text = builder.ToString();
        }
        else
        {
            ScriptManager.RegisterClientScriptBlock(Page, this.GetType(), "idAlert1", "alert('无数据可保存!')", true);
        }
    }
    #endregion 
}

本文转载自:http://blog.csdn.net/smartsmile2012/article/details/8230728

共有 人打赏支持
深圳大道
粉丝 3
博文 877
码字总数 0
作品 0
深圳
架构师
私信 提问
dotNetFlexGrid v1.22 发布

dotNetFlexGrid- Web2.0 asynchronous grid control for asp.net What is it? dotNetFlexGrid是一款asp.net原生的异步表格控件,他的前身是Jquery FlexiGrid插件,我们重构了FlexiGrid的大部......

磊华
2010/08/23
858
0
JQuery FlexiGrid的asp.net完美解决方案:dotNetFlexGrid-asp.net原生的异步表格控件登录 开源中国

dotNetFlexGrid- Web2.0 asynchronous grid control for asp.net What is it? dotNetFlexGrid是一款asp.net原生的异步表格控件,他的前身是Jquery FlexiGrid插件,我们重构了FlexiGrid的大部......

磊华
2010/08/23
0
0
easyui 批量提交 1.2.6版本

批量新增和批量修改都用调用这个方法,但是多行修改保存是可以成功 但是我新增2行 保存 获取的rows.length =2 这个是对的,但是 我获取rows[r].id 就是空,所有的值都是空 好像也没编辑结束 ...

葵雏菊
2014/06/13
189
0
ThinkPHP发布1.5正式版

在沉寂了几个月之后,ThinkPHP终于发布了最新的里程碑版本1.5.0,在新版网站上 线和圣诞之际,送给大家这样一份惊喜和礼物,这个版本所能给我们带来的喜悦远远超出当初的预想。已经有很多的朋...

红薯
2009/01/02
2.7K
0
ASP.NET MVC5+EF6+EasyUI 后台管理系统(82)-Easyui Datagrid批量操作(编辑,删除,添加)

系列目录 前言 有时候我们的后台系统表单比较复杂,做过进销存或者一些销售订单的都应该有过感觉 虽然Easyui Datagrid提供了行内编辑,但是不够灵活,但是我们稍微修改一下来达到批量编辑,批...

文艺小青年
2017/06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

再谈使用开源软件搭建数据分析平台

三年前,我写了这篇博客使用开源软件快速搭建数据分析平台, 当时收到了许多的反馈,有50个点赞和300+的收藏。到现在我还能收到一些关于dataplay2的问题。在过去的三年,开源社区和新技术的发...

naughty
今天
3
0
C++网络编程(一)gRPC的编译

Google是真滴烦,整个编译链全是自家产品,在编译之前先来安装一堆东西 安装环境依赖 chocolatey Windows下的包管理系统,没有他就慢慢去下载下面的一堆乱七八糟的东西吧。CMD下执行下面这句...

Pulsar-V
今天
3
0
Python3的日期和时间

python 中处理日期时间数据通常使用datetime和time库 因为这两个库中的一些功能有些重复,所以,首先我们来比较一下这两个库的区别,这可以帮助我们在适当的情况下时候合适的库。 在Python文...

编程老陆
今天
2
0
分布式面试整理

并发和并行 并行是两个任务同时进行,而并发呢,则是一会做一个任务一会又切换做另一个任务。 临界区 临界区用来表示一种公共资源或者说是共享数据,可以被多个线程使用,但是每一次,只能有...

群星纪元
今天
3
0
手机通过wifi遥控arduino

手机下载Blinker 从Blinker官网下载手机App,安装到手机。 手机连接WiFi。 点击我的设备右上角的"+"添加设备,选择Arduino -> wifi接入,复制密钥以备后续使用。 点击新建的设备,可以在新界...

davidwbnu
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部