各セルをとして持つテーブルを必要とする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;
}
}
}