欢迎光临
我们一直在努力

asp.net 2.0中一次性更新所有gridview的记录_asp.net技巧

建站超值云服务器,限时71元/月

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


<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>


<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();


 


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


                .Append(value1).Append(” , [ContactTitle] = “)


                .Append(value2).Append(” WHERE [CustomerID] = “)


                .Append(value3).Append(“;\n”);


           


        }


 


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


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


        con.Open();


        command.ExecuteNonQuery();


        con.Close();


    }


 


    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);


 


            con.Open();


            GridView1.DataSource = command.ExecuteReader();


            GridView1.DataBind();


            con.Close();


        }


    }


</script>


 


<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>

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » asp.net 2.0中一次性更新所有gridview的记录_asp.net技巧
分享到: 更多 (0)