ASP.net DataGrid为我们提供的内建的记录行编辑功能,但是没有提供内建的添加新行的功能。一个办法就是:在DataTable中添加新行,然后再重新绑定到DataGrid,这个办法可行,但在更新前需要进行确认,可能会产生空行。另外一个解决办法就是:利用DataGrid footer template来提供一个空的行,这样既可以提高速度,也可以避免其它方法带来的不足。 
     为了为浏览者提供一个空行,我们使用DataGrid的Footer Template,我们直接在Footer Template里添加文本框,这样可以避免不必要的操作:比如点击“编辑”按钮等。这样也可以减少往复数据提交的次数。我们这里仍然LinkButton(插入),并设置CommandName属性为“Insert”,这个CommandName在DataGrid的ItemCommand事件中,确保只有用户点击了“Insert”LinkButton才添加记录。添加到数据库的方法是很简单的。    
  下面的这个例子提供了DataGrid快速添加新行的功能。aspx代码和Cohe Behind代码分别如下,注意更改数据录连接字符串:    
  查看例子    
  InsertableDataGrid.aspx    
  <%@ Page Language="<a href="http://dev.21tx.com/language/vb/" target="_blank">VB</a>" AutoEventWireup="false" Codebehind="InsertableDataGrid.aspx.vb" Inherits="aspx<a href="http://dev.21tx.com/web/" target="_blank">Web</a>.InserTableDataGrid"%> 
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
  <HTML> 
  <HEAD> 
  <title>WebForm1</title> 
  <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0"> 
  <meta name="CODE_LANGUAGE" content="Visual Basic 7.0"> 
  <meta name="vs_defaultClientScript" content="<a href="http://dev.21tx.com/web/javascript/" target="_blank">JavaScript</a>"> 
  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> 
  </HEAD> 
  <body MS_POSITIONING="GridLayout"> 
  <form id="Form1" method="post" runat="server"> 
   <asp:DataGrid id="DataGrid1" runat="server" BorderColor="#CC9966" BorderStyle="None" 
   BorderWidth="1px" BackColor="White" CellPadding="4" ShowFooter="True" AutoGenerateColumns="False"> 
   <SelectedItemStyle Font-Bold="True" ForeColor="#663399" BackColor="#FFCC66"></SelectedItemStyle> 
   <ItemStyle ForeColor="#330099" BackColor="White"></ItemStyle> 
   <HeaderStyle Font-Bold="True" ForeColor="#FFFFCC" BackColor="#990000"></HeaderStyle> 
   <FooterStyle ForeColor="#330099" BackColor="#FFFFCC"></FooterStyle> 
   <Columns> 
   <asp:TemplateColumn HeaderText="Employee ID"> 
   <ItemTemplate> 
   <asp:Label id=Label3 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.employeeid") %>'> 
   </asp:Label> 
   </ItemTemplate> 
   <FooterTemplate> 
   <asp:LinkButton id="LinkButton1" runat="server" CommandName="Insert">Insert</asp:LinkButton> 
   </FooterTemplate> 
   <EditItemTemplate> 
   <asp:TextBox id=TextBox5 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.employeeid") %>'> 
   </asp:TextBox> 
   </EditItemTemplate> 
   </asp:TemplateColumn> 
   <asp:TemplateColumn HeaderText="Last Name"> 
   <ItemTemplate> 
   <asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.lastname") %>'> 
   </asp:Label> 
   </ItemTemplate> 
   <FooterTemplate> 
   <asp:TextBox id="TextBox2" runat="server"></asp:TextBox> 
   </FooterTemplate> 
   <EditItemTemplate> 
   <asp:TextBox id="TextBox1" runat="server"></asp:TextBox> 
   </EditItemTemplate> 
   &