一次更新Datagrid 中多列数据

原创 2004年06月23日 09:18:00

一次更新Datagrid 中多列数据

datagrid中一般我们只需一列列的更新数据,但有时需一次更新所有列中数据,提高数据编辑效率。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

为了方便演示用xml文件做为数据源

xml文件:(UserInfo.xml

<?xml version="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(); 

         }  

一次更新Datagrid 中多列数据

 在datagrid中一般我们只需一列列的更新数据,但有时需一次更新所有列中数据,提高数据编辑效率。为了方便演示用xml文件做为数据源xml文件:(UserInfo.xml)xmlversion="1...
  • kyb127
  • kyb127
  • 2007年09月29日 17:07
  • 249

update 多列更新

drop table test;  create table test       (q1  varchar2(200),       q2  varchar2(200),       q3  var...
  • pzasdq
  • pzasdq
  • 2015年11月17日 08:34
  • 700

Sql Server中一次更新多列数据

UPATE yourTableName SET column1 = xx, column2 = yy , column3 = zz WHERE yourCondition 举个例子,比如有这样一张...
  • EXLsunshine
  • EXLsunshine
  • 2014年03月01日 18:59
  • 4171

DataGrid中以多列显示数据,并且对用户的点击改变其背景

正常情况下,DataGrid的一行就是对应数据源中的一条记录!假如现在我的源数据表只有3个字段,能不能让我的DataGrid在一行中显示5条对应的记录呢?答案是肯定的!下面就来看看具体实现的方法。 假...
  • syl2000
  • syl2000
  • 2006年06月19日 14:46
  • 763

asp.net 中一次性更新DATAGRID中所有记录

在asp.net中,如何一次性更新datagrid中的所有记录呢?可以用如下的方法,首先,要对DATAGRID中要更新的列建立模版列,比如:asp:datagrid id="dgPopularFAQs...
  • mdot
  • mdot
  • 2004年12月19日 10:00
  • 1412

easyui datagrid多列checkbox

$('#grid').datagrid({ columns:[[ {field:'CODE_NM',title:'名称',align:'center',width:'40%'},...
  • limin0017
  • limin0017
  • 2017年12月25日 11:10
  • 53

easyui datagrid 多列排序,该如何处理[多列同时order,只针对某一列order]

easyui datagrid 多列排序 不要demo里自带的multisort 那个是在第一列排序的基础上对第二列排序 我只要多列单独排序 每次都只管这一列的顺序 不管原来已排过序的列 可以把原...
  • buster2014
  • buster2014
  • 2015年12月25日 11:32
  • 3584

DataGrid更新数据时的一系列问题的解决

【问题描述】一个表格,里面是员工的信息,可以通过update操作更新员工信息,但这一操作需要在表格下的表单中进行。如上图所示,必须先按下update,然后在红色方框的表单中修改。现在希望能直接在表格里...
  • douzi24
  • douzi24
  • 2011年04月28日 21:28
  • 1369

C#中关于通过dataGrid更新数据库

各位大虾好!我刚刚接触C#.NET学习不久,原来一直在用Delphi做开发,突然转型感觉甚是不爽,这两天研究了一下如何通过dataGrid更新数据库记录的问题,有点小收获,在这里我把我的方法贴出来,供...
  • slightboy
  • slightboy
  • 2004年12月15日 09:21
  • 1304

WPF如何将datagrid绑定到多张表并且允许编辑

 好久前在边学WPF边做开发的时候 就遇到了“怎么将datagrid 的数据源设置为多个表的集合”的问题,办法是有,像使用CollectionContainer等, 但是这些方法都会有一个相同的问题就...
  • loveheye
  • loveheye
  • 2009年11月25日 13:36
  • 3381
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一次更新Datagrid 中多列数据
举报原因:
原因补充:

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