0

に複数追加tbodyしたいと考えていasp.net tableます。これは私がこれまでに試したことです

TableRow tbody = new TableRow();
tbody.TableSection = TableRowSection.TableBody;
TableRow row = new TableRow();
TableCell cell = new TableCell();
row.Attributes.Add("data-filter", "featured");
cell.Text = "Featured";
row.Cells.Add(cell);
tbody.Controls.Add(row);//throws an error saying tablerow can't have table row as child
Table1.Rows.Add(tbody);

これにより、テーブル行をテーブル行の子として持つことができないというエラーがスローされますが、これは正当に聞こえます。しかし、私は行が下にあることを望んで<tbody>おらず、どうすればよいかわかりません。私の望む出力は

<tbody>
      <tr data-filter="featured">
         <td>Featured</td>
      </tr>
</tbody>
4

1 に答える 1

1

では複数<tbody>の要素は使用できません<asp:Table>TableSectionプロパティは、行がレンダリングされる「セクション」を定義しますが、コントロール自体は、1 つの要素につき 1 つの要素しかレンダリングしません。TableRowSection

TableRow例外として、ネストされたオブジェクトは必要ありません。これを試してください:

TableRow tbody = new TableRow();
tbody.TableSection = TableRowSection.TableBody;
TableCell cell = new TableCell();
tbody.Attributes.Add("data-filter", "featured");
cell.Text = "Featured";
tbody.Cells.Add(cell);
Table1.Rows.Add(tbody);

出力は次のとおりです。

<table id="MainContent_Table1">
    <tbody>
        <tr data-filter="featured">
        <td>Featured</td>
        </tr>
    </tbody>
</table>

あなたが求めているものを達成するために、カスタムコントロールを作成するか、おそらく最も簡単な解決策はHtmlGenericControl、テーブル要素をそのように使用して構築することです。最もエレガントではありませんが、望ましい結果が得られます:

var table = new HtmlGenericControl("table");
var tbody = new HtmlGenericControl("tbody");
var tr = new HtmlGenericControl("tr");
var td = new HtmlGenericControl("td");

tr.Attributes.Add("data-filter", "featured");
td.InnerText = "Featured";
tr.Controls.Add(td);

tbody.Controls.Add(tr);
table.Controls.Add(tbody);

tbody = new HtmlGenericControl("tbody");
tr = new HtmlGenericControl("tr");
td = new HtmlGenericControl("td");
tr.Attributes.Add("data-filter", "featured");
td.InnerText = "Featured";
tr.Controls.Add(td);

tbody.Controls.Add(tr);
table.Controls.Add(tbody);

Page.Controls.Add(table);

出力は次のとおりです。

<table>
    <tbody>
        <tr data-filter="featured">
            <td>Featured</td>
        </tr>
    </tbody>
    <tbody>
        <tr data-filter="featured">
            <td>Featured</td>
        </tr>
    </tbody>
</table>
于 2013-06-27T21:11:50.147 に答える