5

私はasp.net [c#]を使用しています..

私の質問は、新しい行を追加することです。そのボタンをクリックすると(そのボタンをクリックするたびに新しい行が追加されるように)..簡単にできると思った..しかし、そこにはありません。何かが足りない、何がわからない。

私のコードは [ Default3.aspx ] です:

<%@ Page Language="C#" AutoEventWireup="true"
    CodeFile="Default3.aspx.cs" Inherits="Default3" %>

<!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 align="center">     

<asp:Table ID="Table1" runat="server">
    <asp:TableRow>
        <asp:TableCell style="border-style:solid" >
           <asp:Label ID="Label1" runat="server" Text="LABEL = 1 ">
           </asp:Label>
        </asp:TableCell>
        <asp:TableCell style="border-style:solid" >
           <asp:Label ID="Label2" runat="server" Text="LABEL = 2 ">
           </asp:Label>
        </asp:TableCell>
    </asp:TableRow>
    <asp:TableRow>
        <asp:TableCell style="border-style:solid" >
           <asp:Label ID="Label3" runat="server" Text="LABEL = 3 ">
           </asp:Label>
        </asp:TableCell>
        <asp:TableCell style="border-style:solid" >
           <asp:Label ID="Label4" runat="server" Text="LABEL = 4 ">
           </asp:Label>
        </asp:TableCell>
    </asp:TableRow>
</asp:Table>

<asp:Button ID="Button1" runat="server" Text="Add More" 
        onclick="Button1_Click" />
</div>
</form>

</body>
</html>

そして私のC#の場合[ Default3.aspx.cs ]:

protected void Button1_Click(object sender, EventArgs e)
{

    TableRow NewRow1 = new TableRow();

    //1st cell
    TableCell NewCell1 = new TableCell();
    NewCell1.Style.Add("border-style","solid");

    // new lebel
    Label newLable1 = new Label();
    count = count + 1; // just for change number in label text 
    newLable1.Text = "NewLabel = "+ count;

    // adding lebel into cell
    NewCell1.Controls.Add(newLable1);

    // adding cells to row
    NewRow1.Cells.Add(NewCell1);

    //2ed cell
    TableCell NewCell2 = new TableCell();
    NewCell2.Style.Add("border-style", "solid");

    Label newLable2 = new Label();
    count = count + 1;
    newLable2.Text = "NewLabel = " + count;
    NewCell2.Controls.Add(newLable2);
    NewRow1.Cells.Add(NewCell2);

    //adding row into table
    Table1.Rows.Add(NewRow1);


}

何が問題なのかわかりません..各コントロールにIDを付けて..他の方法を試しましたが、うまくいきませんでした..

誰かが私を助けてくれるならお願いします..何か重要なものを見逃しているような気がしますが、それが何であるかわかりません..

4

3 に答える 3

2

コントロール (テーブル) の状態を永続化する必要があります。

ここで非常によく似た問題の明確な説明を参照してください ASP.NET 動的に作成されたコントロールとポストバック

于 2012-12-03T00:59:41.563 に答える
2

Walid's answerで共有されている質問に示されているように、次の手順に従います。

  1. 次のようなテーブル行のグローバル リストを作成します。

    List<TableRow> TableRows
    
  2. ボタンをクリックして、新しく作成した行をリストに追加します。

    TableRow row1=new TableRow();
    TableRows.add(row1);
    
  3. このOnInitメソッドでは、すべての行をテーブルに追加するだけです。

    foreach ( TableRow row in TableRows )
    {
        Table1.Rows.Add(row);
    }
    

それはあなたの問題を解決します。

于 2012-12-03T08:39:25.737 に答える
0

次を使用するだけで行を追加できます。

TableRow row1=new TableRow();
TableRows.add(row1);

しかし、懸念は次のとおりです。

  1. ボタンをクリックすると、テーブルに行が追加されます。
  2. 同じボタンをもう一度クリックすると、ASP.NETがステートレスであるため、作成済みの最初の行が保持されなくなります。

解決策:ボタンをクリックするたびに、作成済みの行データが存在することを確認してください。

于 2012-12-03T08:55:39.727 に答える