惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
C
Cybersecurity and Infrastructure Security Agency CISA
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Know Your Adversary
Know Your Adversary
S
Securelist
I
Intezer
AWS News Blog
AWS News Blog
L
LINUX DO - 热门话题
P
Privacy International News Feed
Recent Announcements
Recent Announcements
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
博客园 - 聂微东
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Attack and Defense Labs
Attack and Defense Labs
N
News and Events Feed by Topic
The GitHub Blog
The GitHub Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Schneier on Security
Schneier on Security
N
Netflix TechBlog - Medium
爱范儿
爱范儿
B
Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
C
CERT Recently Published Vulnerability Notes
Hacker News: Ask HN
Hacker News: Ask HN
Google DeepMind News
Google DeepMind News
Engineering at Meta
Engineering at Meta
Blog — PlanetScale
Blog — PlanetScale
WordPress大学
WordPress大学
S
Secure Thoughts
K
Kaspersky official blog
N
News | PayPal Newsroom
O
OpenAI News
Last Week in AI
Last Week in AI
C
Check Point Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Cyberwarzone
Cyberwarzone
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Tor Project blog
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
D
Docker
Hugging Face - Blog
Hugging Face - Blog
T
Threat Research - Cisco Blogs
Cisco Talos Blog
Cisco Talos Blog
The Register - Security
The Register - Security
博客园 - 司徒正美
Martin Fowler
Martin Fowler
人人都是产品经理
人人都是产品经理
P
Palo Alto Networks Blog

博客园 - 大鱼

使用XML文件来动态配置ASP.NET MVC的Route规则 发送HTML表单数据:URL编码的表单数据 MVC核心功能组件和简介 emulator-5554 disconnected! Cancelling '*** activity launch'! 安卓模拟器启动报错 AJAX 调用 WEBSERVICE的例子,包括对XML数据的处理,包含源码下载 类似ipone的滑动开锁功能--拖动后能自动回滚到起始位置--BackgroundWorker 批处理文件BAT安装WINDOWS服务带参数和设置目录 正则表达式30分钟入门教程(第二版) 【转载】 Excel VBA 应用 --批量修改选中区域单元格的时间数据,自动为时间值加1月 CELL值=CELL值 + DateAdd(“m”,1,date) - 大鱼 基于Windows下的Web性能测试和压力测试-zhuan team foundation server 安装 图片上传控件 SQL Server 2005异地备份 - 转-已验证 SQL Server 2005 镜像功能实现 - 转 -已验证 如何在VS 2005 SP1中使用VS的web服务器运行一个相对于根目录“/”的网站 xmlhttp-JS-实现用户是否注册无刷新验证 VS项目模板(项模板)制作--针对ASP.NET站点页面使用 安装用于 Team Foundation Server(单服务器部署)的 Microsoft Windows SharePoint Services ---TFS安装问题集 Aspect inside castle 实现 AOP
gridview 在列表中对信息进行增删改,通过VIEWSTATE进行缓存,然后一次性将数据提交到服务器端。
大鱼 · 2010-05-27 · via 博客园 - 大鱼

为XX人写的DEMO样例,功能实现:gridview 在列表中对信息进行增删改,通过VIEWSTATE进行缓存,然后一次性将数据提交到服务器端。 下载地址:DOWNLOAD

代码:

 

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
           DataTable dt = GetData();
           this.GridView1.DataSource = dt;
           this.GridView1.DataBind();
        }
    }

    public DataTable GetData()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Title");
        dt.Columns.Add("ID");

        DataRow dr = dt.NewRow();
        dr["Title"] = "测试标题";
        dr["ID"] = "1";
        dt.Rows.Add(dr);

        DataRow dr1 = dt.NewRow();
        dr1["Title"] = "测试标题";
        dr1["ID"] = "1";
        dt.Rows.Add(dr1);
       
        //新增行处理
        if (ViewState["ADDIdS"] != null)
        {
            string idAdds = ViewState["ADDIdS"].ToString();
            idAdds = idAdds.TrimStart(char.Parse(","));
            string[] items = idAdds.Split(char.Parse(","));

            for (int i = 0; i < items.Length; i++)
            {
                DataRow dtOne = dt.NewRow();
                dtOne["ID"] = (items[i].Split(char.Parse("|")))[0];
                dtOne["Title"] = (items[i].Split(char.Parse("|")))[1];
                dt.Rows.Add(dtOne);
            }
       
        }
        //删除行处理 -- 自己搞定
        if (ViewState["DeleteIdS"] != null)
        {
            string[] ids = (ViewState["DeleteIdS"].ToString()).TrimStart(char.Parse(",")).Split(char.Parse(","));
            for (int i = 0; i < ids.Length; i++)
            {
                for (int ii = 0; ii < dt.Rows.Count; ii++)
                {
                    if (dt.Rows[ii]["ID"].ToString() == ids[i])
                    {
                        dt.Rows[ii].Delete();
                        break;
                    }
                }
            }  
       
        }

      
        return dt;
    }

    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        if (ViewState["DeleteIdS"] == null)
        {
            ViewState.Add("DeleteIdS", string.Format(",{0}", GridView1.DataKeys[e.RowIndex].Value.ToString()));
        }
        else
        {
            ViewState["DeleteIdS"] = ViewState["DeleteIdS"].ToString() + string.Format(",{0}", GridView1.DataKeys[e.RowIndex].Value.ToString()); // ViewState["DeleteIdS"]
        }

        //检索增加记录,看看是否存在删除的ID
        string idAdds = ViewState["ADDIdS"] != null ? ViewState["ADDIdS"].ToString() : null;
        if (idAdds != null)
        {
            idAdds = idAdds.TrimStart(char.Parse(","));
            string[] items = idAdds.Split(char.Parse(","));

            //过滤相关记录并进行组装,
            for (int i = 0; i < items.Length; i++)
            {
            }
        }


        DataTable dt = GetData();
        this.GridView1.DataSource = dt;
        this.GridView1.DataBind();
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        if (ViewState["ADDIdS"] == null)
        {
            ViewState.Add("ADDIdS", string.Format(",{0}|{1}",Guid.NewGuid().ToString(),this.TextBox1.Text));
        }
        else
        {
            ViewState["ADDIdS"] = ViewState["ADDIdS"].ToString() + string.Format(",{0}|{1}",Guid.NewGuid().ToString(),this.TextBox1.Text); // ViewState["DeleteIdS"]
        }

        DataTable dt = GetData();
        this.GridView1.DataSource = dt;
        this.GridView1.DataBind();
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        //新增行数据
        string idAdds = ViewState["ADDIdS"] != null? ViewState["ADDIdS"].ToString() : null;            //
        //删除行数据
        string[] ids = ViewState["DeleteIdS"] != null ? null:(ViewState["DeleteIdS"].ToString()).TrimStart(char.Parse(",")).Split(char.Parse(","));

        //新增行处理
        if (idAdds != null)
        {
            idAdds = idAdds.TrimStart(char.Parse(","));
            string[] items = idAdds.Split(char.Parse(","));

            //新增行处理
            for (int i = 0; i < items.Length; i++)
            {
            }           
        }


       
    }