• asp.net 中一次性更新所有GRIDVIEW的记录(转)


          本文摘自:http://www.cnblogs.com/failyblue/archive/2008/07/03/1234966.html

          我参考第二种方法实现了我的功能。但第二种方法中在执行多条语句时会报“无效字符\n”错误。我对第二种方法稍作修改,修改地方请看本文第二种方法中的红色字部分。

    原文如下:

         我们经常会遇到这样的情况,在Gridview中列出的所有记录中,有时要同时修改多条记录,并且将其保存到数据库中去。那么在Gridview中应该如何实现呢?在Gridview中,有两种实现的方法,下面分别进行介绍:

       先来看下第一种方法,本方法是使用sqldatasource来更新所有记录,但这个方法比较慢,因为每更新一条记录都要建立数据连接并执行updatecommand,会影响性能。其主要代码如下:

     void Button1_Click(object sender, EventArgs e)
       {
          
    for (int i = 0; i < GridView1.Rows.Count; i++)
          {
            GridViewRow row 
    = GridView1.Rows;
            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.Value.ToString();
            SqlDataSource1.Update();
          }
       }  

     在上面的代码中,我们必须首先指定updateparameters参数集合,也就是指出要更新的是哪些字段,它们的类型是什么。之后并指出 sqldatasource的updatecommand语句。而在更新按钮button1的CLICK事件中,将以遍历的形式,使用for循环,对 Gridview中的每一行进行检查,将每个更新了的文本框的内容放到sqldatasouce的updateparameters参数中去,最后调用 sqldatasource的update方法,完成更新。

       方法2使用的是首先遍历Gridview中的每一行,并且使用SQL语句,将要更新的内容连接起来,然后最后才使用command.ExecuteNonQuery()进行更新,效率高了,主要代码如下:

    protected void Page_Load(object sender, EventArgs e)
    {
    if (!Page.IsPostBack)
    {
     SqlConnection con 
    = new SqlConnection(ConfigurationManager.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();
    }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {

      StringBuilder query = new StringBuilder();

       query .Append("begin").Append("\n");

      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");
     }
      query .Append(" end;"); SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["AppConnectionString1"].ConnectionString);
     SqlCommand command 
    = new SqlCommand(query.ToString(), con);
     con.Open();
     command.ExecuteNonQuery();
     con.Close();
    }
    }
  • 相关阅读:
    swift网络数据请求方法
    使用jQuery在javascript中自定义事件
    javascript循环事件只响应最后一次的问题处理
    关于PHP 时区错误的问题
    安装MySql出现Error Nr.1045的解决办法
    view的阴影效果shadowColor
    关于Swift中的泛函数find的问题
    [BZOJ3196][Tyvj1730]二逼平衡树
    [BZOJ4671]异或图
    [BZOJ4621]Tc605
  • 原文地址:https://www.cnblogs.com/scottckt/p/1425325.html
Copyright © 2020-2023  润新知