好的,我有一张桌子,我正在动态构建。 ATM我正在开发的代码没有问题构建表并获取数据填充表。然而,我的问题是,当表中填充多行时,或者假设多行时,它只是将表中的新行添加到第一个表的末尾。所以我的问题是我在代码中做错了什么,以及如何让表格正确填充以便添加新行而不是将其添加到第一行。
我的代码如下:
public void UpdateTableControls()
{
try
{
machine = inputsService.GetMachineSiteDetails(SiteID);
if (machine.ToString() != "")
{
foreach (Machine Machine in machine)
{
AddNewRow1(Machine);
}
}
else
{
logger.ErrorFormat("UpdateTableControls fail, no machine in database.");
}
}
catch (Exception ex)
{
logger.ErrorFormat(
"UpdateTableControls - Exception adding either new machine type or machine model, {0}.", ex);
}
}
这可以获得每台机器创建一行的机器数量。它是通过Web服务从DB获得的。
private void AddNewRow1(Machine Machine)
{
//start a new row
TableCell site = new TableCell();
TableCell name = new TableCell();
TableCell type = new TableCell();
TableCell model = new TableCell();
TableRow tr = new TableRow();
Literal breakline = new Literal();
breakline.Text = "<br />";
Literal breakline1 = new Literal();
breakline1.Text = "<br />";
//site name column
site.RowSpan = 2;
site.Controls.Add(AddSiteField(Machine));
tr.Controls.Add(site);
//machine name
name.RowSpan = 2;
name.Controls.Add(AddMachineField(Machine));
tr.Controls.Add(name);
//machine type name
type.RowSpan = 2;
type.Controls.Add(AddMachineTypeField(Machine));
type.Controls.Add(breakline);
type.Controls.Add(AddTypeComboBox(Machine));
tr.Controls.Add(type);
//machine model name
model.RowSpan = 2;
model.Controls.Add(AddMachineModelField(Machine));
model.Controls.Add(breakline1);
model.Controls.Add(AddModelComboBox(Machine));
tr.Controls.Add(model);
AssignPlaceHolder.Controls.Add(tr);
}
此方法使用数据创建并填充行,并将其发送到占位符。
我猜测问题是我要么不添加断行线或新行,要么就是没有将上面的方法识别为新行。
编辑:
我想要实现的是这样的 注意|是列之间的分离。
网站|机器名称|机器类型|机器模型网站|机器名称 |机器类型|机器模型
我得到的ATM就是这个
网站|机器名称|机器类型|机器型号|网站|机 名字|机器类型|机器模型
没有新行/行
非常感谢任何帮助或建议。谢谢。
答案 0 :(得分:0)
我猜你可以使用TableRow。 - How to: Add Rows and Cells Dynamically to a Table
答案 1 :(得分:0)
<br/>
与向表中添加新行不同。
你想做什么 - 每台机器加两行?第一行包含文本,第二行在最后两列中包含下拉列表?为此,您需要生成2个TableRow对象并将下拉列表添加到第二行。因此,类型和模型不会有rowspan = 2。
或者,您的问题是只出现一行,而不管Web服务返回的计算机数量是多少?
一旦你添加这些下拉列表,你认为他们会做一些有趣的事情吗?除非在AddTypeComboBox中有一些非常棘手的代码要进行自动回复,否则我没有看到你想要做什么。如果您使用了DataGrid,GridView等,您可以将它们绑定到包含控件的模板,并且它可以对下拉列表的更改做出反应。
答案 2 :(得分:0)
切换到ASP.NET MVC并使用AJAX。所有很酷的孩子都在这样做。