gpt4 book ai didi

c# - 我可以将多个 元素插入 asp :Table programmatically?

转载 作者:太空宇宙 更新时间:2023-11-03 14:18:56 25 4
gpt4 key购买 nike

另见相关问题 can we have multiple <tbody> in same <table>?

假设我想使用 asp:table 生成下表:

<table>
<thead>
...stuff...
</thead>
<tbody class="odd">
<th scope="tbody">CUSTOMER 1</th>
<tr><td>#1</td><td>January</td></tr>
<tr><td>#2</td><td>April</td></tr>
<tr><td>#3</td><td>March</td></tr>
</tbody>
<tbody class="even">
<th scope="tbody">CUSTOMER 2</th>
<tr><td>#1</td><td>January</td></tr>
<tr><td>#2</td><td>April</td></tr>
<tr><td>#3</td><td>March</td></tr>
</tbody>
<tbody class="odd">
<th scope="tbody">CUSTOMER 3</th>
<tr><td>#1</td><td>January</td></tr>
<tr><td>#2</td><td>April</td></tr>
<tr><td>#3</td><td>March</td></tr>
</tbody>
</table>

我可以构建这些吗 <tbody>/<tr>以编程方式添加元素?

我试过做类似的事情:

var x = new HtmlGenericControl("tbody");
x.Attributes["class"] = jobNum % 2 == 0 ? "even" : "odd";
TableRow xinfoRow = buildXInfoRow(job); x.Controls.Add(xinfoRow);
TableRow xdescriptionRow = buildXDescriptionRow(job); x.Controls.Add(xdescriptionRow);
myTable.Controls.Add(x);

但这只会给我错误 'Table' cannot have children of type 'HtmlGenericControl' .

我能找到TableRow、TableCell、TableHeaderRow、TableHeaderCell 等类,但我似乎找不到TableBody 或TableHeader。我可以在页眉、正文或页脚中放置行:

descriptionRow.TableSection = TableRowSection.TableBody;

...但我似乎无法将行分成多个不同的 <tbody>元素。我几乎已经放弃并开始使用 <asp:ListView>生成表格,但我很想知道这是否可以完成。

最佳答案

没有办法增强asp:Table <tbody> 的功能仅凭其属性。但我知道您可以通过三种方式实现这一点:

  1. 创建一个派生自 System.Web.UI.WebControls.Table 的类并覆盖它的方法 RenderContents用你自己的逻辑。查看 .NET Framework native 方法的默认实现 (Table.RenderContents),了解如何使用 .NET Reflector 等任何反汇编程序来管理它。

  2. (最难的方法)创建你自己的 asp:Table具有子类(TableBody、TableBodyRow、TableBodyCell 等);)

  3. 使用 asp:Repeater相反,像那样:

<asp:Repeater ...>
<HeaderTemplate>
<table>
<thead>
..stuff..
</thead>
<tbody class="odd">
</HeaderTemplate>
<ItemTemplate>
<tr> ..stuff.. </tr>
</ItemTemplate>
<SeparatorTemplate>
<asp:PlaceHolder Visible='<%# (Container.ItemIndex + 1) % 3 %>' runat="server">
<tbody class="<%# (Container.ItemIndex + 1) % 6 > 3 ? "even" : "odd" %>">
</asp:PlaceHolder>
</SeparatorTemplate>
<FooterTemplate>
</tbody>
</table>
</FooterTemplate>
</asp:Repeater>

甚至使用子中继器(如果您有两个集合——按月计算的客户和值(value),这可能是更好的方法)

P.S.:通过查看您的示例,<th>里面<tbody>就 HTML 规则而言是不正确的。不要在那里使用它。

关于c# - 我可以将多个 <tbody> 元素插入 asp :Table programmatically?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5906977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com