动态地将表构建为占位符
本文关键字:占位符 构建 动态 | 更新日期: 2023-09-27 18:12:05
我试图在用户点击按钮时动态构建一个表。我要做的是有它,这样它就会首先建立表的标题。
我尝试这样做的代码如下。当用户点击create table按钮时这个方法会运行:
private void AddTableTitles()
{
Literal startRow = new Literal();
startRow.Text = "<tr><th colspan='"2'">";
Literal Column = new Literal();
Column.Text = "</th><th colspan='"2'">";
Literal endRow = new Literal();
endRow.Text = "</th></tr>";
AssignPlaceHolder.Controls.Add(startRow);
AssignPlaceHolder.Controls.Add(AddSiteHeader());
AssignPlaceHolder.Controls.Add(Column);
AssignPlaceHolder.Controls.Add(AddMachNameHeader());
AssignPlaceHolder.Controls.Add(Column);
AssignPlaceHolder.Controls.Add(AddMachTypeHeader());
AssignPlaceHolder.Controls.Add(Column);
AssignPlaceHolder.Controls.Add(AddMachModelHeader());
AssignPlaceHolder.Controls.Add(endRow);
}
注意:AssignPlaceHolder只是把给定的项放到页面中。代码如下:
public PlaceHolder AssignPlaceHolders
{
get { return this.AssignPlaceHolder; }
}
所以我想要得到的是这样的东西
站点|机器名称|机器类型|机器型号
作为表头,然而,这是我最终得到的:
SiteMachine NameMachine Type | Machine Model
注意:"|"代表你应该在表中得到的列之间的分割。
正如你所看到的,它只会把它分成两列。我到底做错了什么,我该如何解决这个问题?
注意:我知道我可以硬编码这部分,但是通过弄清楚如何让这部分以这种方式工作,我将能够解决我与我的表的动态部分所遇到的问题,该动态部分的项目数量由存储在数据库中的机器数量决定,该数据库也有同样的事情发生在它身上。
Update1 按要求
private Label AddSiteHeader()
{
Label label = new Label();
label.ForeColor = System.Drawing.Color.DarkBlue;
label.Text = "Site ";
return label;
}
所有这些方法所做的就是创建一个标签并填充它的文本
在这种情况下Repeater
会更有用吗?
<asp:Repeater ID="yourTable" runat="server">
<HeaderTemplate>
<table>
<tr>
<th><%= AddSiteHeader() %></th>
<th><%= AddMachTypeHeader() %></th>
<th><%= AddMachModelHeader()%></th>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("Site") %></td>
<td><%# Eval("MachType") %></td>
<td><%# Eval("MachModel") %></td>
</tr>
</ItemTemplate>
<FooterTemplate>
</table>
</FooterTemplate>
</asp:Repeater>
你可以将它绑定到你的数据源,这样可以节省大量的工作,因为它正在做你正在做的事情。如果你只需要Repeater
的HTML输出,你想要提供输出并将其推入div或其他东西,你可以预渲染它并使用RenderControl
方法获得HTML输出。
似乎解决方案的工作方式是使用旧的ASP思维方式,而不是ASP。. NET和利用它的优势
好的,所以我找到了使用占位符我以前,所以我想我会张贴它,以防其他人有这个问题。
private void AddTableTitles()
{
TableHeaderCell site = new TableHeaderCell();
TableHeaderCell name = new TableHeaderCell();
TableHeaderCell type = new TableHeaderCell();
TableHeaderCell model = new TableHeaderCell();
TableHeaderRow th = new TableHeaderRow();
site.Controls.Add(AddSiteHeader());
th.Controls.Add(site);
//AssignPlaceHolder.Controls.Add(th);
name.Controls.Add(AddMachNameHeader());
th.Controls.Add(name);
//AssignPlaceHolder.Controls.Add(th);
type.Controls.Add(AddMachTypeHeader());
th.Controls.Add(type);
//AssignPlaceHolder.Controls.Add(th);
model.Controls.Add(AddMachModelHeader());
th.Controls.Add(model);
AssignPlaceHolder.Controls.Add(th);
}
它最终成为一个简单的问题,只需要为每列添加新的表格单元格。