4

現時点では、コンテンツがサブクラスによって作成されるはずのテーブルを作成しようとしています (RESTful Web サービスのクエリの結果)。私はかなり長い間それに取り組んできましたが、それを機能させることができないようです。私は非常に多くの異なる解決策を試しました。

  • サブクラスでテーブルを作成し、それを Page.Controls に追加します。「コントロールにコード ブロック (つまり <% ... %>) が含まれているため、Controls コレクションを変更できません。」これはまったく意味がありません。
  • ページに空のテーブルを作成しようとし、そのハンドルを行の追加を担当するサブクラスに渡しました。注目が集まった。
  • TableRowCollection を返そうとし、以前に作成した (空の) テーブルに割り当てました。何も起こらなかった。
  • ここで、テーブルに 1 つの行と 1 つのセルを追加したいだけです (必要なものへの赤ちゃんのステップ)。それでもうまくいきません。添付のコードを見つけてください。

    TableRow row = new TableRow();
    table.Rows.Add(row);
    
    TableCell cell = new TableCell();
    row.Cells.Add(cell);
    
    cell.Controls.Add(new TextBox());
    

テーブルは単純で空です。

<asp:Table ID="table" runat="server" /> 

ブラウザで表示されるソース コードは次のようになります。

<table id="table">
</table> 

私はウェブ上で無数の例を見てきましたが、すべてこのように見えます。それはどこかの小さな問題だと思いますが、私はそれを理解することができませんでした。この混乱を解決するためのヒントを提供できるすべての人に、生涯の感謝を捧げたいと思います.

4

4 に答える 4

5

それは機能しています、私はそれをテストしました:

私のページの読み込みには、次のものがあります。

 protected void Page_Load(object sender, EventArgs e)
        {
            TableRow row = new TableRow();
            TableCell cell = new TableCell();
            cell.Controls.Add(new TextBox());
            row.Cells.Add(cell);
            table.Rows.Add(row);
        }

私のaspxページには、次のものがあります。

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <asp:Table ID="table" runat="server" /> 
</asp:Content>

このコードによってレンダリングされる html:

<table id="MainContent_table">
    <tbody><tr>
        <td><input name="ctl00$MainContent$ctl00" type="text"></td>
    </tr>
</tbody></table>
于 2012-06-02T11:36:04.630 に答える
1

asp:GridView または asp:Repeater のいずれかを使用します

例:リピーター

    <table>
        <asp:Repeater id="repeater1" runat="server">
            <ItemTemplate>
                <tr>
                    <td><asp:Literal id="literal1" runat="server" /></td>
                </tr>
            </ItemTemplate>
        </asp:Repeater>
    </table>

次に、コードビハインドで

repeater1.DataSource = myDatasource;
repeater1.DataBind();

またはGridViewを使用できます

table.Rows.Add() を使用すると、特にポストバックでコンテンツが消えたり、LinkBut​​tons などをテーブル セルに追加する必要がある場合にイベント ハンドラーが起動しないという問題が発生する傾向があります。

于 2012-06-02T11:31:35.720 に答える
0

問題は、これらの行をテーブルのどこに追加するか、つまり、ページのどのイベントで追加するかということです。

ポストバックは追加されたすべての行をクリアしていると私は感じています。

実行シーケンスを教えてください。また、行を追加するためにコードをpage_initイベントに入れてみてください。

于 2012-06-02T12:01:47.030 に答える
0
Might solve your problem.
Make table runat="server" in your aspx code
<table id="tbl" runat="server">
</table> 



    protected void Page_Load(object sender, EventArgs e)
        {
                  if(!IsPostBack)
              {
            TableRow tr = new TableRow();

            TableCell tc = new TableCell();
            TextBox txtBox = new TextBox();

            // Add the control to the TableCell
            tc.Controls.Add(txtBox);
            // Add the TableCell to the TableRow
            tr.Cells.Add(tc);

            // Add the TableRow to the Table
            tbl.Rows.Add(tr);
                  }

        }
于 2012-06-02T12:03:27.427 に答える