zoukankan      html  css  js  c++  java
  • 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();
    }
    }
  • 相关阅读:
    "gcc: cannot specify -o when generating multiple output files"解决方案
    VSCode 回退到上一层
    Mac下的clion配置c/c++环境
    安装homebrew报错error: Not a valid ref: refs/remotes/origin/master 的解决方法
    正则多个空格替换成一个空格 多个相同的字符值保留一个
    python for 循环的速度
    下载器
    requests content 和text 编码格式
    博客园积分排名
    python QQ 发送邮件功能
  • 原文地址:https://www.cnblogs.com/scottckt/p/1425325.html
Copyright © 2011-2022 走看看