文档章节

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

深圳大道
 深圳大道
发布于 2016/12/29 15:33
字数 960
阅读 117
收藏 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
895
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
4.4K
0
easyui 批量提交 1.2.6版本

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

葵雏菊
2014/06/13
197
0
.NET数据库编程求索之路--4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(5)

4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(5) 作者:夏春涛 xchunta@163.com 转载请注明来源:http://www.cnblogs.com/SummerRain/archive/2012/07/25/2609166.html 4.6 界面层H...

夏春涛
2012/07/25
0
0
ThinkPHP发布1.5正式版

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

红薯
2009/01/02
2.8K
0

没有更多内容

加载失败,请刷新页面

加载更多

自定义ApiBoot Logging链路以及单元ID生成策略

ApiBoot Logging会为每一个请求都对应创建链路编号(TraceID)以及单元编号(SpanID),用于归类每一次请求日志,通过一个链路下日志单元的Parent SpanID可以进行上下级关系的梳理。 前文回顾...

恒宇少年
24分钟前
10
0
浅谈 Application 和 activity

对于 在 Application初始化一些变量,为什么不可以放在activity 或者其他的组件里呢? 这里就根据个人的理解来讲述一下,欢迎补充指正。 首先 activity 是以栈的形式出现,一个app应用会有多...

MrLins
24分钟前
11
0
Allegro的脚本文件内容里都有哪些

小伙伴们在使用Allegro的时候是否经常用到脚本文件夹呢?scr的用法其实可真不简单。。。 首先脚本文件的运行模式就存在很多种,比如不提示错误信息,不弹出确认对画框(这样很有利于我们执行...

demyar
26分钟前
19
0
微信升级外链管理规范,「砍一刀帮我加速」要被禁止了

原创: 蒋鸿昌 首发:「知晓程序」公众号 - 最好的微信新商业媒体 几天前,知名互联网评论人阑夕模仿皮尤研究中心(Pew Research Center)在美国做的互联网通识调查问卷,做了一份中文版问卷...

知晓云
27分钟前
15
0
CentOS 7接投影仪

我将一台安装着CentOS 7图形界面的惠普笔记本电脑当桌面使用。最近,想要连接投影仪时却遇到了问题。笔记本有一个HDMI接口。我买了一个HDMI---->VGA的转接线,连上笔记本电脑后,屏幕一直在闪...

大别阿郎
30分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部