VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1063|回复: 9

关于asp.net中的DataGrid数据批量更新

[复制链接]

3

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-24 02:00:01 | 显示全部楼层 |阅读模式
在asp.net中,我用DataSet获取。在DataGrid中绑定DataSet.Tables["***"].DefaultView,现在我在DataGrid修改了一些数据,我要怎么样才能批量更新数据呢,是把DataGrid中的行都取出来然后用update来更新吗?
回复

使用道具 举报

0

主题

2

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-10 12:45:01 | 显示全部楼层
参考:

/// <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>
回复

使用道具 举报

1

主题

3

帖子

3.00

积分

新手上路

Rank: 1

积分
3.00
发表于 2020-2-11 12:15:02 | 显示全部楼层
mark
回复

使用道具 举报

0

主题

15

帖子

10.00

积分

新手上路

Rank: 1

积分
10.00
发表于 2020-2-13 20:30:01 | 显示全部楼层
顶下
回复

使用道具 举报

3

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-4-11 16:45:01 | 显示全部楼层
thestarwar
是不是就是用循环把表中的内容取出,然后更新啊,有没有其他办法
回复

使用道具 举报

0

主题

9

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-4-16 15:30:01 | 显示全部楼层
应该可以把数据放在dataadapter中,然后使用sqladapter的update方法更新
不过没用过,感觉不实用,一直都是遍历整个datagrid来更新
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-4-25 06:15:01 | 显示全部楼层
应该有更好的方法,这也太复杂点了吧!
回复

使用道具 举报

0

主题

6

帖子

6.00

积分

新手上路

Rank: 1

积分
6.00
发表于 2020-4-26 08:00:02 | 显示全部楼层
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" botton

dim rowafftected as integer

rowaffected = dataadapter.update(dataset', "yourTable")

回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-30 07:15:01 | 显示全部楼层
我也是看不太明白啊.
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-9-1 10:15:01 | 显示全部楼层
不错不错!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表