一次更新Datagrid 中多列数据

转载 2007年09月29日 17:07:00
 
在datagrid中一般我们只需一列列的更新数据,但有时需一次更新所有列中数据,提高数据编辑效率。
为了方便演示用xml文件做为数据源
xml文件:(UserInfo.xml)
<?xmlversion="1.0"standalone="yes"?>
<UserInfos>
 <UserInfo>
    <Email>some@you.net</Email>
    <Name>me</Name>
    <TEL>0123456</TEL>
 </UserInfo>
 <UserInfo>
    <Email>youraddress@you.com</Email>
    <Name>he</Name>
    <TEL>7894563</TEL>
 </UserInfo>
 <UserInfo>
    <Email>youraddress@you.com</Email>
    <Name>222</Name>
    <TEL>123342</TEL>
 </UserInfo>
 <UserInfo>
    <Email>youraddress@you.com</Email>
    <Name>haha</Name>
    <TEL>3545445</TEL>
 </UserInfo>
   <UserInfo>
    <Email>youraddress@you.com</Email>
    <Name>sam</Name>
    <TEL>879563</TEL>
 </UserInfo>
</UserInfos>
页面代码:
<form id="Form1" method="post" runat="server">
                     <asp:DataGrid id="DGrid" runat="server" ShowFooter="True" GridLines="None" CellPadding="2" AutoGenerateColumns="False">
                            <HeaderStyle Font-Bold="True"></HeaderStyle>
                            <Columns>
                                   <asp:TemplateColumn HeaderText="名字">
                                          <ItemTemplate>
                                                 <asp:TextBox id=Name runat="server" Width="109px" Text='<%# DataBinder.Eval(Container, "DataItem.Name") %>'>
                                                 </asp:TextBox>
                                          </ItemTemplate>
                                          <FooterTemplate>
                                                 <asp:TextBox id="NewName" runat="server" Width="109px"></asp:TextBox>
                                          </FooterTemplate>
                                   </asp:TemplateColumn>
                                   <asp:TemplateColumn HeaderText="电话">
                                          <ItemTemplate>
                                                 <asp:TextBox id=TEL runat="server" Width="109px" Text='<%# DataBinder.Eval(Container, "DataItem.TEL") %>'>
                                                 </asp:TextBox>
                                          </ItemTemplate>
                                          <FooterTemplate>
                                                 <asp:TextBox id="NewTEL" runat="server" Width="109px"></asp:TextBox>
                                          </FooterTemplate>
                                   </asp:TemplateColumn>
                                   <asp:TemplateColumn HeaderText="Email">
                                          <ItemTemplate>
                                                 <asp:TextBox id=Email runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Email") %>'>
                                                 </asp:TextBox>
                                          </ItemTemplate>
                                          <FooterTemplate>
                                                 <asp:TextBox id="NewEmail" runat="server"></asp:TextBox>
                                          </FooterTemplate>
                                   </asp:TemplateColumn>
                                   <asp:TemplateColumn HeaderText="删除">
                                          <ItemStyle HorizontalAlign="Center"></ItemStyle>
                                          <ItemTemplate>
                                                 <asp:CheckBox Runat="server" ID="chkDelete"></asp:CheckBox>
                                          </ItemTemplate>
                                          <FooterStyle HorizontalAlign="Center"></FooterStyle>
                                          <FooterTemplate>
                                                 <asp:LinkButton Runat="server" Text="增加" CommandName="Add" ID="Linkbutton1"></asp:LinkButton>
                                          </FooterTemplate>
                                   </asp:TemplateColumn>
                            </Columns>
                     </asp:DataGrid>
                     <asp:Button id="btnUpdate" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 208px" runat="server"
                            Text="更新"></asp:Button>
              </form>
后台代码:
         private DataSet dsUser;//定义dsUser
         private void Page_Load(object sender, System.EventArgs e) 
         { 
              // 读取XML 文件.到dataset中
              dsUser = new DataSet(); 
              dsUser.ReadXml(Server.MapPath("UserInfo.xml")); 
              if (!Page.IsPostBack ) 
              {  
                   BindData();  
              } 
         } 
         private void BindData() 
         { 
              // datagrid绑定dataset
              DataView dv = new DataView(dsUser.Tables["UserInfo"]); 
              DGrid.DataSource = dv; 
              DGrid.DataBind(); 
         } 
        //把dataset保存到xml文件
         private void Save() 
         { 
              dsUser.WriteXml(Server.MapPath("UserInfo.xml")); 
         }  
         private void DGrid_ItemCommand(object source , System.Web.UI.WebControls.DataGridCommandEventArgs e) 
         {   
              //增加一行到dataset中。使用了arrary结构
              if (e.CommandName == "Add") 
              { 
                   string[] sUser = {"", "", ""}; 
                   sUser[0] = ((TextBox)e.Item.FindControl("NewEmail")).Text; 
                   sUser[1] = ((TextBox)e.Item.FindControl("NewName")).Text; 
                   sUser[2] = ((TextBox)e.Item.FindControl("NewTEL")).Text; 
 
                   dsUser.Tables["UserInfo"].Rows.Add(sUser); 
 
                   Save(); 
              } 
 
              BindData(); 
         }  
         private void btnUpdate_Click(object sender, System.EventArgs e) 
         { 
              // 遍历datagrid中所有列. 
              foreach (DataGridItem di in DGrid.Items) 
              { 
                   //不遍历datagrid中的 header or footer.  
                   if (di.ItemType == ListItemType.Item || di.ItemType == ListItemType.AlternatingItem) 
                   { 
 
                       DataRow dr = dsUser.Tables["UserInfo"].Rows.Find(DGrid.DataKeys[di.ItemIndex]); 
 
                       // 如果删除被选中. 
                       if (((CheckBox)di.FindControl("chkDelete")).Checked) 
                       { 
                            dsUser.Tables["UserInfo"].Rows.Remove(dr); 
                       } 
                       else 
                       { 
                            // 更新
                            dr["Email"] = ((TextBox)di.FindControl("Email")).Text; 
                            dr["Name"] = ((TextBox)di.FindControl("Name")).Text; 
                            dr["TEL"] = ((TextBox)di.FindControl("TEL")).Text; 
                       } 
                   } 
              } 
 
              // 如果有改动
              if (dsUser.HasChanges()) 
              { 
                   Save(); 
              } 
 
              BindData(); 
  }

WPF学习笔记——编辑DataGrid单元格并实时更新到数据库

在使用WPF时,常常需要利用DataGrid向用户展现从数据库中提取的数据,并提供编辑功能。在完成对单元格的编辑时,我需要把修改后的数据及时更新到数据源,并且上传到数据库。...
  • NA_OnlyOne
  • NA_OnlyOne
  • 2016年10月01日 14:22
  • 3922

Easyui datagrid 动态添加数据

1、页面代码
  • ytangdigl
  • ytangdigl
  • 2017年05月17日 15:08
  • 1961

datagrid初始化表格时不加载数据及分页设置无效的原因

页面在初始化加载数据较多时会非常耗时,如果只加载表格,用户再根据自己的需要通过条件查询数据,就会节约一些时间,提高用户体验,所以在初始化datagrid时想只加载表格不加载数据,做到数据与表格加载分离...
  • chengsi101
  • chengsi101
  • 2017年07月02日 21:18
  • 900

mysql 一次更新(update)多条记录

工作中遇到一个问题:要更新一个数据表。 这个表是我自己创建的,有7个字段,id、name、package等等 创建的时候,因为我把name、package的信息分别存在两个文本文件中, 所以我就...
  • svap1
  • svap1
  • 2014年04月08日 18:21
  • 1914

C# 的DataGridView 操作数据库 插入,更新,删除

数据库的主键为ID,如果不设,C#访问会有问题,问题描述:对于不返回任何键列信息的 SelectCommand,不支持 DeleteCommand 的动态 SQL 生成。 C#代码: usi...
  • ys20092507
  • ys20092507
  • 2017年03月04日 13:08
  • 1462

WPF中DataGrid数据绑定(泛型和datatable)

前台代码: ...
  • kwy15732621629
  • kwy15732621629
  • 2016年07月16日 19:53
  • 3595

【EasyUi DataGrid】批量修改提交

在实际操作中,批量修改的例子有很多,最常用的一种便是“假批量修改”,即修改一行后,当点击其它行时就把这行修改后的数据提交,拥有保存功能的“保存”按钮,说到底就是为我们修改的最后一行准备的(例如:Nav...
  • chenyanmoting
  • chenyanmoting
  • 2015年07月31日 15:05
  • 3277

wpf datagrid简单显示数据

1.在XAML代码中写出固定列,绑定数据名称                                                         2.创建数据结构 3....
  • www89574622
  • www89574622
  • 2017年07月27日 14:19
  • 837

jQuery EasyUI 1.5版本的Datagrid终于新增了表格加载的数据没有记录的时候,可显示“无记录”的提示语

jQuery EasyUI1.5版本的Datagrid终于新增了表格加载的数据没有记录的时候,可显示“无记录”的提示语(PS:这功能以前都是自己写的,现在终于可以利用API了)。不过试用之下发现,设置...
  • love_xiolan
  • love_xiolan
  • 2016年09月12日 18:45
  • 3120

数据绑定——DataGrid

绑定数据
  • wgp15732622312
  • wgp15732622312
  • 2016年05月15日 17:14
  • 526
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: 一次更新Datagrid 中多列数据
举报原因:
原因补充:

(最多只允许输入30个字)