0

ASPXページでは、サーバー側の文字列にコンテンツを入力し、それを構成を使用して出力HTMLに配置することにより、プログラムでテーブルの行にデータを入力しています<tbody><%=mystring%></tbody>

行の要素の1つは<td>、行を削除するためのボタンです。サーバー<td>に、行の別の要素を渡す必要があります。

テーブルを準備するサーバー側のコードで、私は次のことを試しました。

string RowTemplate; 
RowTemplate = "<tr><td>{0}</td><td>{1}</td><td>{2}</td><td><form action=\"/submit\" name=\"removeemail{0}\" runat=\"server\"><input custom=\"{1}\" class=\"btn icon-remove\" value=\"X\" onserverclick=\"RemoveEmail\" runat=\"server\"/></form></td></tr>";

次に、行を作成すると、プレースホルダー{0}、{1}、および{2}が行の対応する値に置き換えられます。

アイデアは、RemoveEmailと呼ばれるサーバー側関数で「カスタム」属性(削除用のキー)を取得し、削除された行なしでテーブルを再構築することです。

ただし、このインラインフォーム用に生成されたHTMLはASPXエンジンによって前処理されていないため、ブラウザに到達するHTMLコードは直接ASPXHTMLマークアップになります。

ASPXマークアップを前処理して、.aspxファイルを検索するような静的ASPXマークアップとまったく同じように動作させるにはどうすればよいですか?それが不可能な場合、ASPXのテーブル行にあるインラインボタンを使用してサーバー側の削除を管理するにはどうすればよいですか?

4

1 に答える 1

1

runat="server"これらHTML Controlsに追加することで、サーバー側のコントロールとして機能するようになるとは思いません。マークアップに追加runat="server"することができ、それはうまくいくでしょう。これは私がこれを行う1つの方法です:

マークアップ:

<body>
    <form id="form1" runat="server">
    <div>
       <asp:Table runat="server" ID="tbl"></asp:Table>
    </div>
    </form>
</body>

コードビハインド:

TableRow tr = new TableRow();
tr.Cells.Add(new TableCell() { Text = "Argument0" });
tr.Cells.Add(new TableCell() { Text = "Argument1" });
tr.Cells.Add(new TableCell() { Text = "Argument2" });
TableCell td = new TableCell();
Button btn = new Button();

tr.Cells.Add(td);
btn.Text = "Remove Email";
btn.Click+=new EventHandler(removeEmail);

td.Controls.Add(btn);
this.tbl.Rows.Add(tr);

void removeEmail(object sender, EventArgs e)
{ 
    //code here
}

Buttonこれにより、コントロールがに追加され、イベントがこのボタンにTableCellアタッチされます。removeEmail()

幸運を。

于 2013-01-28T16:42:26.700 に答える