在用户界面中向表中动态添加行

时间:2013-03-26 13:26:00

标签: asp.net gridview dynamic textarea

我正在处理 ASP.NET 中的应用程序,该应用程序需要一个表格,其中每个单元格都为TextArea。问题是,该表中的行数应该是动态的,并且应该添加一行并单击按钮(例如,按钮“添加”)。

我对ASP.NET比较陌生,我从GridView开始,但无济于事。如果有人可以告诉我从哪一个动态添加行开始,这对我有帮助。

1 个答案:

答案 0 :(得分:0)

你可以选择这样的东西

  1. 在网页上删除网格视图
  2. 制作您的数据输入表格&使用按钮单击事件
  3. 动态地向gridview添加行
  4. 在表单保存上,使用foreach loop&读取gridview的行。将它们保存到数据库
  5. 使用ViewState中的数据表存储temprary行以保留值postback
  6. 我也添加了删除功能, ASPX

        <%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddGridViewRows.aspx.cs" Inherits="AddGridViewRows" %>
    
    <!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>
    
            <br />
            First Name :
            <asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
            <br />
            Last Name:
            <asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
            <br />
            <asp:Button ID="btnAddRows" runat="server" onclick="btnAddRows_Click" 
                Text="Add Rows To Grid" />
            <br />
            <asp:GridView ID="GridView1" runat="server" AutoGenerateDeleteButton="True" 
                onrowdeleting="GridView1_RowDeleting">
            </asp:GridView>
    
        </div>
        </form>
    </body>
    </html>
    

    代码隐藏

    using System;
    using System.Web.UI.WebControls;
    using System.Data;
    
    public partial class AddGridViewRows : System.Web.UI.Page
    {
    
        DataTable dt = null;
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
        protected void btnAddRows_Click(object sender, EventArgs e)
        {
            if (ViewState["myData"] == null)
            {
                // Initialize data table if viewstate is null
                dt = new DataTable();
                dt.Columns.Add("SNo", typeof(int));
                dt.Columns.Add("FirstName", typeof(string));
                dt.Columns.Add("LastName", typeof(string));
                dt.Columns[0].AutoIncrement = true;    // Autogenerate serial key column for example
                dt.Columns[0].AutoIncrementSeed = 1;
            }
            else
                dt = ViewState["myData"] as DataTable;  // Grab datatable from viewstate if its not null
    
            // Add your data row
            DataRow dr = dt.NewRow();
            dr["FirstName"] = txtFirstName.Text;
            dr["LastName"] = txtLastName.Text;
            dt.Rows.Add(dr);
            // Bind your gridview
            GridView1.DataSource = dt;
            GridView1.DataBind();
            // Save datatable to ViewState
            ViewState["myData"] = dt;
        }
    
        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            if (ViewState["myData"] != null)
            {
                dt = ViewState["myData"] as DataTable;
                dt.Rows.RemoveAt(e.RowIndex);
                GridView1.DataSource = dt;
                GridView1.DataBind();
                ViewState["myData"] = dt;
            }
        }
    }