转载: GridView实现多行编辑

//前台代码
<%@   Page   Language="C#"   AutoEventWireup="true"   CodeFile="GridMuliEdit.aspx.cs"   Inherits="CSDN_GridMuliEdit"   %>  
   
  <!DOCTYPE   html   PUBLIC   "-//W3C//DTD   XHTML   1.0   Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
   
  <html   xmlns="http://www.w3.org/1999/xhtml"   >  
  <head   runat="server">  
          <title>无标题页</title>  
  </head>  
  <body>  
          <form   id="form1"   runat="server">  
          <div>  
                  <asp:Button   ID="Button1"   runat="server"   Text="添加空行"   OnClick="Button1_Click"   />  
                  <asp:Button   ID="Button2"   runat="server"   Text="保存所有"   OnClick="Button2_Click"   />  
                  <asp:GridView   ID="GridView1"   runat="server"   AutoGenerateColumns="False"   DataKeyNames="id">  
                          <Columns>  
                                  <asp:TemplateField   HeaderText="产品">  
                                          <ItemTemplate>  
                                                  <asp:TextBox   ID="TextBox1"   runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,   "产品")%>'></asp:TextBox>  
                                          </ItemTemplate>  
                                  </asp:TemplateField>  
                                  <asp:TemplateField   HeaderText="数量">   <ItemTemplate>  
                                                  <asp:TextBox   ID="TextBox2"   runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,   "数量")%>'></asp:TextBox>  
                                          </ItemTemplate></asp:TemplateField>  
                                  <asp:TemplateField   HeaderText="日期">   <ItemTemplate>  
                                                  <asp:TextBox   ID="TextBox3"   runat="server"   Text='<%#   DataBinder.Eval(Container.DataItem,   "日期")%>'></asp:TextBox>  
                                          </ItemTemplate></asp:TemplateField>  
                                  <asp:TemplateField   HeaderText="状态">  
                                          <ItemTemplate>  
                                                  <asp:DropDownList   ID="DropDownList1"   runat="server"     SelectedValue='<%#   DataBinder.Eval(Container.DataItem,   "状态")%>'>  
                                                          <asp:ListItem   Value="1">有效</asp:ListItem>  
                                                          <asp:ListItem   Value="0">无效</asp:ListItem>  
                                                  </asp:DropDownList>  
                                          </ItemTemplate>  
                                  </asp:TemplateField>  
                          </Columns>  
                  </asp:GridView>  
           
          </div>  
          </form>  
  </body>  
  </html>  

//后台文件
using   System;  
  using   System.Data;  
  using   System.Web;  
  using   System.Web.UI;  
  using   System.Web.UI.WebControls;  
  using   System.Web.UI.HtmlControls;  
   
  public   partial   class   CSDN_GridMuliEdit   :   System.Web.UI.Page  
  {  
          protected   void   Page_Load(object   sender,   EventArgs   e)  
          {  
                  if   (!IsPostBack)  
                  {  
                          BindTestData();  
                  }  
          }  
   
          protected   void   BindTestData()  
          {  
                  //模拟出一些原始数据绑定DataGrid  
                  DataTable   dt1   =   new   DataTable("Table1");  
                  dt1.Columns.Add("ID");  
                  dt1.Columns.Add("产品");  
                  dt1.Columns.Add("数量");  
                  dt1.Columns.Add("日期");  
                  dt1.Columns.Add("状态");  
   
                  dt1.Rows.Add(new   object[]   {   123,"产品AA",   12,   "2006-11-14",   "1"   });  
                  dt1.Rows.Add(new   object[]   {   124,   "产品BB",   21,   "2006-11-13",   "0"   });  
                  dt1.AcceptChanges();  
   
                  this.GridView1.DataSource   =   dt1;  
                  this.GridView1.DataBind();  
          }  
   
          protected   DataTable   GetDataFromGrid()  
          {  
                  DataTable   dt1   =   new   DataTable("Table1");  
                  dt1.Columns.Add("ID");  
                  dt1.Columns.Add("产品");  
                  dt1.Columns.Add("数量");  
                  dt1.Columns.Add("日期");  
                  dt1.Columns.Add("状态");  
                  for(int   i   =0;i<GridView1.Rows.Count;i++)  
                  {  
                          GridViewRow   gRow   =   GridView1.Rows[i];  
                          DataRow   newRow   =   dt1.NewRow();  
                          newRow[0]   =   GridView1.DataKeys[i].Value;  
                          newRow[1]   =   ((TextBox)gRow.FindControl("TextBox1")).Text;  
                          newRow[2]   =   ((TextBox)gRow.FindControl("TextBox2")).Text;  
                          newRow[3]   =   ((TextBox)gRow.FindControl("TextBox3")).Text;  
                          newRow[4]   =   ((DropDownList)gRow.FindControl("DropDownList1")).SelectedValue;  
                          dt1.Rows.Add(newRow);  
                  }  
                  dt1.AcceptChanges();  
                  return   dt1;  
          }  
   
          protected   void   Button1_Click(object   sender,   EventArgs   e)  
          {  
                  DataTable   dt   =   this.GetDataFromGrid();  
                  DataRow   newRow   =   dt.NewRow();  
                  newRow["状态"]   =   "1";  
                  dt.Rows.Add(newRow);  
                  this.GridView1.DataSource   =   dt;  
                  this.GridView1.DataBind();  
          }  
          protected   void   Button2_Click(object   sender,   EventArgs   e)  
          {  
                  DataTable   dt   =   this.GetDataFromGrid();  
                  foreach   (DataRow   row   in   dt.Rows)  
                  {  
                          if   (row["ID"]   !=   null)  
                          {  
                                  //更新该行记录到数据库  
                          }  
                          else  
                          {  
                                  //插入该行记录到数据库  
                          }  
                  }  
          }  
  }  

posted @ 2007-12-27 10:16  寒天飞雪  阅读(2625)  评论(1编辑  收藏  举报