【发布时间】:2019-09-23 16:52:50
【问题描述】:
我正在尝试在用户点击按钮时动态构建表格。我想要做的是拥有它,以便它首先构建表格的标题。
我尝试执行此操作的代码如下。所以当用户点击创建表按钮时,这个方法就会运行:
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; }
}
所以我想要得到的是这样的东西。
网站 |机器名称 |机器类型 |机器型号
然而,作为表头,这就是我最终得到的:
站点机器名称机器类型 |机器型号
注意:“|”表示您应该在表格中获得的列之间的拆分。
如您所见,它只会将其分成两列。我到底做错了什么,我该如何解决这个问题?
注意:我知道我可以对这部分进行硬编码,但是通过弄清楚如何让这部分以这种方式工作,我将能够解决我在表的动态部分遇到的问题送入其中的项目数量取决于存储在数据库中的机器数量,这些机器也发生了同样的事情。
更新1 根据要求
private Label AddSiteHeader()
{
Label label = new Label();
label.ForeColor = System.Drawing.Color.DarkBlue;
label.Text = "Site ";
return label;
}
所有这些方法所做的就是创建一个标签并为其填充文本。
【问题讨论】:
-
@Jame213 使用带有硬编码 HTML 的
Literal控件而不是使用像HtmlTable这样的内置 HTML 对象来构建适当的表格控件然后从 @ 渲染 HTML 的任何原因987654326@控制自己?您可能需要显示更多代码,例如AddSiteHeader()中发生的事情,我假设它只返回文本Site。还有什么代码被添加来启动和关闭你的<table>? -
@Kelsey 好吧,我正在尝试通过以前的开发人员在涉及动态表的其他页面上所做的工作来实现这一点,所以没有特别的理由说明我为什么要使用文字而不是我要离开以前的开发人员做了什么。但是,如果您认为使用 htmltable 代替文字会更好或更正确,那么我会试一试。
-
@Jame213 我建议使用
Repeater,如下所示,只需将Repeater以任何形式绑定到您的项目列表。 -
@Kelsey 中继器可以处理从网络服务上传的数据吗?
-
你几乎可以将任何东西绑定到
Repeater。即使是List<SomeObject>也可以。我认为您应该研究 DataBinding 在 ASP.NET 中的工作原理,因为您缺少一些非常有用的功能,这些功能可能会在未来为您节省大量时间。
标签: c# asp.net html web-services