`

asp.net 2.0中一次性更新所有GRIDVIEW的记录 (翻译)

阅读更多
在asp.net 2.0中,gridview控件是十分不错的控件。有的时候,可能一个GRIDVIEW控件中
的各行都是文本框,如何一次性更新所有修改过的记录呢?有两种方法,一种是使用sqldatasource来更新
所有记录,但这个方法比较慢,因为每更新一条记录都要建立数据连接并执行updatecommand,会影响性能,
但还是先来看下实现方法:
 

<%@ Page Language="C#" %>

<o:p> </o:p>

<script runat="server">

   

    void Button1_Click(object sender, EventArgs e)

    {

        for (int i = 0; i < GridView1.Rows.Count; i++)

        {

            GridViewRow row = GridView1.Rows[i];

            SqlDataSource1.UpdateParameters[0].DefaultValue = ((TextBox)row.Cells[0].FindControl("TextBox2")).Text;

            SqlDataSource1.UpdateParameters[1].DefaultValue = ((TextBox)row.Cells[1].FindControl("TextBox3")).Text;

            SqlDataSource1.UpdateParameters[2].DefaultValue = GridView1.DataKeys[i].Value.ToString();

            SqlDataSource1.Update();

        }

    }   

   

</script>

<o:p> </o:p>

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>Untitled Page</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:GridView ID="GridView1" Runat="server" DataSourceID="SqlDataSource1" DataKeyNames="CustomerID"

            AutoGenerateColumns="False">

            <Columns>

                <asp:TemplateField SortExpression="CustomerID" HeaderText="CustomerID">

                <ItemTemplate>

                    <asp:TextBox Runat="server" Text='<%# Bind("CustomerID") %>' ID="TextBox1"></asp:TextBox>

                </ItemTemplate>

                </asp:TemplateField>

                <asp:TemplateField SortExpression="CompanyName" HeaderText="CompanyName">

                    <ItemTemplate>

                        <asp:TextBox Runat="server" Text='<%# Bind("CompanyName") %>' ID="TextBox2"></asp:TextBox>

                    </ItemTemplate>

                </asp:TemplateField>

                <asp:TemplateField SortExpression="ContactName" HeaderText="ContactTitle">

                    <ItemTemplate>

                        <asp:TextBox Runat="server" Text='<%# Bind("ContactTitle") %>' ID="TextBox3"></asp:TextBox>

                    </ItemTemplate>

                </asp:TemplateField>

            </Columns>

        </asp:GridView>

        <asp:SqlDataSource ID="SqlDataSource1" Runat="server"

            SelectCommand="SELECT [CustomerID], [CompanyName], [ContactName], [ContactTitle] FROM [Customers]"

            UpdateCommand="UPDATE [Customers] SET [CompanyName] = @CompanyName, [ContactTitle] = @ContactTitle WHERE [CustomerID] = @CustomerID"

            ConnectionString="<%$ ConnectionStrings:AppConnectionString1 %>">

            <UpdateParameters>

                <asp:Parameter Type="String" Name="CompanyName"></asp:Parameter>

                <asp:Parameter Type="String" Name="ContactTitle"></asp:Parameter>

                <asp:Parameter Type="String" Name="CustomerID"></asp:Parameter>

            </UpdateParameters>

        </asp:SqlDataSource>

        <asp:Button ID="Button1" Runat="server" Text="Button" OnClick="Button1_Click" />&nbsp;

   

    </div>

    </form>

</body>

</html>

  另外一个方法是用组合SQL语句来进行的,速度比较快,原理也容易明白

<%@ Page Language="C#" %>

<%@ Import Namespace="System.Text" %>

<%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server">

   

    void Button1_Click(object sender, EventArgs e)

    {

        StringBuilder query = new StringBuilder();

       

        for (int i = 0; i < GridView1.Rows.Count; i++)

        {

            GridViewRow row = GridView1.Rows[i];

            string value1 = ((TextBox)row.Cells[0].FindControl("TextBox2")).Text.Replace("'","''");

            string value2 = ((TextBox)row.Cells[1].FindControl("TextBox3")).Text.Replace("'","''");

            string value3 = GridView1.DataKeys[i].Value.ToString();

<o:p> </o:p>

            query.Append("UPDATE [Customers] SET [CompanyName] = '")

                .Append(value1).Append("' , [ContactTitle] = '")

                .Append(value2).Append("' WHERE [CustomerID] = '")

                .Append(value3).Append("';\n");

           

        }

<o:p> </o:p>

        SqlConnection con = new SqlConnection(ConfigurationSettings.ConnectionStrings["AppConnectionString1"].ConnectionString);

        SqlCommand command = new SqlCommand(query.ToString(), con);

        con.Open();

        command.ExecuteNonQuery();

        con.Close();

    }

<o:p> </o:p>

    void Page_Load(object sender, EventArgs e)

    {

        if (!Page.IsPostBack)

        {

            SqlConnection con = new SqlConnection(ConfigurationSettings.ConnectionStrings["AppConnectionString1"].ConnectionString);

            SqlCommand command = new SqlCommand("SELECT [CustomerID], [CompanyName], [ContactName], [ContactTitle] FROM [Customers]", con);

<o:p> </o:p>

            con.Open();

            GridView1.DataSource = command.ExecuteReader();

            GridView1.DataBind();

            con.Close();

        }

    }

</script>

<o:p> </o:p>

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

    <title>Untitled Page</title>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <asp:GridView ID="GridView1" Runat="server" DataKeyNames="CustomerID"

            AutoGenerateColumns="False">

            <Columns>

                <asp:TemplateField SortExpression="CustomerID" HeaderText="CustomerID">

                <ItemTemplate>

                    <asp:TextBox Runat="server" Text='<%# Bind("CustomerID") %>' ID="TextBox1"></asp:TextBox>

                </ItemTemplate>

                </asp:TemplateField>

                <asp:TemplateField SortExpression="CompanyName" HeaderText="CompanyName">

                    <ItemTemplate>

                        <asp:TextBox Runat="server" Text='<%# Bind("CompanyName") %>' ID="TextBox2"></asp:TextBox>

                    </ItemTemplate>

                </asp:TemplateField>

                <asp:TemplateField SortExpression="ContactName" HeaderText="ContactTitle">

                    <ItemTemplate>

                        <asp:TextBox Runat="server" Text='<%# Bind("ContactTitle") %>' ID="TextBox3"></asp:TextBox>

                    </ItemTemplate>

                </asp:TemplateField>

            </Columns>

        </asp:GridView>

      

        <asp:Button ID="Button1" Runat="server" Text="Button" OnClick="Button1_Click" />&nbsp;

   

    </div>

    </form>

</body>

</html>

分享到:
评论

相关推荐

    精通ASP.NET2.0+SQL Server 2005项目开发 源码.rar

    每个案例都是一次学习和实践的机会,通过这些案例,开发者不仅可以掌握ASP.NET 2.0与SQL Server 2005的整合技术,还能了解项目开发的完整流程,从需求分析到设计、编码、测试和维护。这些文件(如C05、C03、C06、C04...

    asp.net2.0教程

    ASP.NET 2.0是微软推出的用于构建动态网站、Web应用程序和Web服务的框架,它是在ASP.NET 1.x的基础上进行的一次重大升级,引入了许多新特性,提升了开发效率和性能。本教程将深入探讨ASP.NET 2.0的核心概念和技术,...

    完全手册:ASP.NET2.0网络开发详解教程光盘

    本教程光盘“完全手册:ASP.NET2.0网络开发详解教程”很可能包含了以上所有内容的详细讲解,包括实际案例、代码示例和练习,帮助读者全面了解和掌握ASP.NET 2.0的开发技巧。通过学习,开发者不仅能理解ASP.NET 2.0的...

    ASP.NET 2.0技术内幕

    `GridView` 控件是ASP.NET 2.0中最常用的数据绑定控件之一,它提供了丰富的功能,如排序、分页、编辑等。通过简单地设置属性,开发者就可以轻松地展示复杂的数据集。 **使用 GridView 控件的步骤:** 1. 在页面上...

    ASP.NET2.0全程指南

    总结,ASP.NET 2.0是一次重要的更新,它极大地提高了开发者的生产力,提供了更为强大和灵活的Web开发平台。"ASP.NET 2.0全程指南"将帮助读者全面掌握这一框架,从基础到高级,从理论到实践,为构建高效、安全和可...

    asp.net 2.0 基础知识

    ASP.NET 2.0 是 ASP.NET 1.x 的一次重大升级,它不仅增强了原有的功能,还引入了许多新特性,极大地提高了开发效率。下面将详细介绍 ASP.NET 2.0 的几个关键特性。 ##### 1. 登录控件 在 ASP.NET 2.0 中新增的登录...

    Asp.net2.0投票演示程序.zip

    总的来说,这个Asp.NET 2.0投票演示程序展示了ASP.NET 2.0的核心特性和Web开发的最佳实践,包括但不限于Web控件的使用、数据绑定、状态管理、数据库操作、安全性以及用户权限管理。通过学习和分析这个程序,开发者...

    明日科技ASP.NET 2.0开发[示例源码]

    3. **母版页(Master Pages)**:母版页是ASP.NET 2.0中的一个重要特性,它允许开发者定义一个统一的页面布局,所有子页面都可以继承这个布局,提高了页面的重用性和一致性。 4. **主题和皮肤**:ASP.NET 2.0支持...

    精通asp.net2.0的web2.0 电子教程.rar

    ASP.NET 2.0是微软开发的一个用于构建Web应用程序的框架,它建立在.NET Framework的基础之上,提供了丰富的功能和高效能。本教程旨在帮助开发者深入理解ASP.NET 2.0的Web2.0技术,使其能够轻松掌握并应用到实际项目...

    Asp.net 2.0新增/改进的知识点

    ASP.NET 2.0是.NET Framework的重要更新,它引入了许多新功能和改进,显著提升了开发效率和用户体验。以下是一些关键的新增和改进的知识点: 1. **页面事件生命周期的扩展**: ASP.NET 2.0扩展了页面生命周期,...

    ASP.NET 2.0数据教程(二)

    这使得大型数据集可以在多个页面上呈现,减少一次性加载的数据量。分页可通过控件属性设置或在代码后端实现。 在这个教程的第二部分,你将学习如何配置和使用这些数据控件,理解数据操作的基本流程,以及如何实现...

    asp.net 2.0分页

    分页是将一个大数据集分割成多个小部分,每次只加载和显示一部分数据,而不是一次性加载所有数据。这样可以减少网络传输的数据量,提高页面加载速度,并使用户更容易浏览和管理大量的信息。 在ASP.NET 2.0中,...

    Asp.net2.0电子商务网源码开源

    综上所述,这个开源的Asp.net2.0电子商务网站源码是一个宝贵的资源,对于学习.NET开发、电商系统构建,甚至是进行二次开发的开发者来说,都是一个不可多得的实践案例。通过深入理解和研究源码,不仅可以提升技术能力...

    ASP.NET 2.0

    总之,ASP.NET 2.0是一次重大的升级,它不仅改进了开发流程,提高了开发效率,还引入了许多现代Web开发的关键特性,如Ajax支持、强大的数据绑定控件和母版页机制,为Web开发者带来了前所未有的便利。这些特性奠定了...

    用Asp.net 2.0实现网上留言本

    考虑到性能,可采用分页显示留言,避免一次性加载过多数据。另外,定期备份数据库以防数据丢失。 七、部署与测试 完成开发后,将应用部署到IIS服务器,进行功能测试和性能测试,确保所有功能正常运行,无明显性能...

    ASP.NET-[聊天留言]超酷的Asp.net2.0留言板.zip

    在这个“ASP.NET-[聊天留言]超酷的Asp.net2.0留言板.zip”压缩包中,我们主要关注的是一个用ASP.NET 2.0实现的聊天留言系统。这个系统可能是为网站提供交互性,允许访客留下他们的信息,进行简单的在线交流。 首先...

    ASP.NET 2.0编程珠玑--来自MVP的权威开发指南

    ASP.NET 2.0是微软开发的一个用于构建Web应用程序的框架,它是在.NET Framework 2.0版本上构建的。本书《ASP.NET 2.0编程珠玑--来自MVP的权威开发指南》深入探讨了这个强大的平台,旨在帮助开发者充分利用其特性进行...

    ASP.NET 2.0数据访问教程(C#版本)

    总结来说,ASP.NET 2.0数据访问教程是一次全面的学习之旅,无论你是初学者还是有经验的开发者,都能从中受益。它涵盖了从基础的数据库连接到高级的数据绑定和安全策略,是提升你在ASP.NET 2.0数据处理能力的绝佳资源...

    ASP.NET 2.0快速入门(下)(视频教程)

    ASP.NET 2.0是微软推出的用于构建动态网站、Web应用程序和Web服务的框架,它基于.NET Framework,为开发者提供了一种高效、易用且功能...无论你是初次接触ASP.NET还是希望提升现有技能,这都将是一次宝贵的自学体验。

    asp.net 2.0 教师档案管理系统

    例如,GridView控件可以配置分页,减少一次性加载的数据量;使用OutputCache指令可以缓存静态内容,减少服务器负载。 9. **TeacherFile_51aspx**:这个文件名可能是系统的某个具体页面,可能用于展示或编辑特定ID为...

Global site tag (gtag.js) - Google Analytics