在asp.net中,我用DataSet获取。在DataGrid中绑定DataSet.Tables["***"].DefaultView,现在我在DataGrid修改了一些数据,我要怎么样才能批量更新数据呢,是把DataGrid中的行都取出来然后用update来更新吗?
在线等答案,也可以QQ:261766987

解决方案 »

  1.   

    参考:/// <summary>
     /// WebForm2 的摘要说明。
     /// </summary>
     public class WebForm2 : System.Web.UI.Page
     {
      private string strcon = "server=localhost;database=pubs;uid=sa;pwd=wang";
      protected System.Web.UI.WebControls.DataGrid DataGrid1;
     
      private void Page_Load(object sender, System.EventArgs e)
      {
       if(!IsPostBack)
       {
        BindGrid();
       }
      }
      private void BindGrid()
      {
       System.Data.SqlClient.SqlConnection con=new System.Data.SqlClient.SqlConnection(strcon);
       string sql="select top 5 * from authors order by au_id desc";
       System.Data.SqlClient.SqlCommand cmd=new System.Data.SqlClient.SqlCommand(sql,con);
       con.Open();
       DataGrid1.DataSource = cmd.ExecuteReader();
       DataGrid1.DataBind();
       con.Close();
      }  #region Web 窗体设计器生成的代码
      override protected void OnInit(EventArgs e)
      {
       //
       // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
       //
       InitializeComponent();
       base.OnInit(e);
      }
      
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {    
       this.DataGrid1.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_ItemCommand);
       this.DataGrid1.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
       this.Load += new System.EventHandler(this.Page_Load);  }
      #endregion  private void DataGrid1_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
      {
       if(e.Item.ItemType == ListItemType.Footer)
       {
        if(e.CommandName=="edit")
        {
         for(int i=0;i< DataGrid1.Items.Count;i++)
         {
          
          TextBox t1=new TextBox();
          t1=(TextBox)DataGrid1.Items[i].FindControl("TextBox1");
         
          TextBox t2=new TextBox();
          t2=(TextBox)DataGrid1.Items[i].FindControl("TextBox2");
          string id=DataGrid1.Items[i].Cells[0].Text;
          string sql="update authors set au_fname='"+t1.Text+"',au_lname='"+t2.Text+"' where au_id='"+id+"'";
          if(Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteNonQuery(strcon,CommandType.Text,sql)!=1)
          {
           Response.Write("更新失败!");
           return;
          }
          
          //Response.Write("<Li>ID:"+DataGrid1.Items[i].Cells[0].Text);
          //Response.Write("更新内容1:" + t1.Text);
          //Response.Write("更新内容2:" + t2.Text);
         
         }     BindGrid();
        }
       }
      }  private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
      {
       //if(e.Item.ItemType == ListItemType.Footer)
       //{
        //Button b1=(Button)e.Item.FindControl("Button1");
        //b1.Attributes.Add("onclick","return confirm('您真的要全部更新吗?');");
       //}   if(e.Item.ItemType== ListItemType.Item || e.Item.ItemType== ListItemType.AlternatingItem)
       {
        TextBox t1,t2;
        t1=(TextBox)e.Item.FindControl("TextBox1");
        t1.Attributes.Add("onfocus","this.className='edit'");
        t1.Attributes.Add("onblur","this.className='noedit'");    t2=(TextBox)e.Item.FindControl("TextBox2");
        t2.Attributes.Add("onfocus","this.className='edit'");
        t2.Attributes.Add("onblur","this.className='noedit'");   }
      }
     }
    HTML:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
     <HEAD>
      <title>WebForm2</title>
      <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
      <meta content="C#" name="CODE_LANGUAGE">
      <meta content="JavaScript" name="vs_defaultClientScript">
      <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
      <LINK href="1.css" type="text/css" rel="stylesheet">
     </HEAD>
     <body>
      <form id="Form1" method="post" runat="server">
       <asp:datagrid id="DataGrid1" runat="server" CellPadding="3" BackColor="White" BorderWidth="1px"
        BorderStyle="None" BorderColor="#CCCCCC" AutoGenerateColumns="False" ShowFooter="True" ShowHeader="False">
        <FooterStyle ForeColor="#000066" BackColor="White"></FooterStyle>
        <SelectedItemStyle Font-Bold="True" ForeColor="White" BackColor="#669999"></SelectedItemStyle>
        <ItemStyle ForeColor="#000066"></ItemStyle>
        <HeaderStyle Font-Bold="True" ForeColor="White" BackColor="#006699"></HeaderStyle>
        <Columns>
         <asp:BoundColumn DataField="au_id" HeaderText="ID"></asp:BoundColumn>
         <asp:TemplateColumn>
          <ItemTemplate>
           <asp:TextBox id=TextBox1 runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"au_fname")%>' CssClass="noedit">
           </asp:TextBox>
           <asp:RequiredFieldValidator id="RequiredFieldValidator1" runat="server" ErrorMessage="*!" ControlToValidate="TextBox1"
            EnableViewState="False"></asp:RequiredFieldValidator>
          </ItemTemplate>
         </asp:TemplateColumn>
         <asp:TemplateColumn>
          <ItemTemplate>
           <asp:TextBox id=TextBox2 runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"au_lname")%>' CssClass="noedit">
           </asp:TextBox>
           <asp:RequiredFieldValidator id="RequiredFieldValidator2" runat="server" ErrorMessage="*!" ControlToValidate="TextBox2"
            EnableViewState="False"></asp:RequiredFieldValidator>
          </ItemTemplate>
          <FooterTemplate>
           <DIV align="right">
            <asp:Button id="Button1" runat="server" Text="更新" CommandName="edit"></asp:Button><INPUT type="reset" value="还原">&nbsp;</DIV>
          </FooterTemplate>
         </asp:TemplateColumn>
        </Columns>
        <PagerStyle HorizontalAlign="Left" ForeColor="#000066" BackColor="White" Mode="NumericPages"></PagerStyle>
       </asp:datagrid>
      </form>
     </body>
    </HTML>
      

  2.   

    eqh(我想早恋,可已经晚了...) 
    是不是就是用循环把表中的内容取出,然后更新啊,有没有其他办法
      

  3.   

    应该可以把数据放在dataadapter中,然后使用sqladapter的update方法更新
    不过没用过,感觉不实用,一直都是遍历整个datagrid来更新
      

  4.   

    if you retrive your data from database and store it in dataset ---- get the selectedID, note that the following code only change the data
         in your dataset rather than database
    form each row in dataset.table("table").rows
      if row.item("id") = selectedID 
      row.delete
    end if 
    next ---------  when you click the "submit" bottondim rowafftected as integerrowaffected = dataadapter.update(dataset', "yourTable")