我正在ASP.NET中开发一个应用程序,该应用程序需要一个表,其中每个单元格都为TextArea
. 问题是,该表中的行数应该是动态的,并且应该通过单击按钮(例如,“添加”按钮)添加一行。
我对 ASP.NET 比较陌生,我开始使用GridView
但无济于事。如果有人能告诉我从哪里开始进行这种动态添加行,那将对我有所帮助。
你可以去做这样的事情
foreach loop
并将它们保存到数据库ViewState
以保留回发值我也添加了删除功能,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;
}
}
}