C# 如何向动态生成的表中添加新行/转到下一行?
好的,我有一张动态生成的桌子。ATM我一直在开发的代码在构建表和获取填充表的数据方面没有问题。然而,我的问题是,当表中填充了多行,或者假定为多行时,它只是将表中假定为新行的内容添加到第一个表的末尾。所以我的问题是我在代码中做错了什么,以及如何正确填充表,以便它添加一个新行,而不是仅仅将其添加到第一行 我的代码如下:C# 如何向动态生成的表中添加新行/转到下一行?,c#,asp.net,html,web-services,dynamic,C#,Asp.net,Html,Web Services,Dynamic,好的,我有一张动态生成的桌子。ATM我一直在开发的代码在构建表和获取填充表的数据方面没有问题。然而,我的问题是,当表中填充了多行,或者假定为多行时,它只是将表中假定为新行的内容添加到第一个表的末尾。所以我的问题是我在代码中做错了什么,以及如何正确填充表,以便它添加一个新行,而不是仅仅将其添加到第一行 我的代码如下: public void UpdateTableControls() { try { machine = inputsS
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服务从数据库中获取的
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);
}
private void AddNewRow1(机器)
{
//开始新的一行
TableCell站点=新的TableCell();
TableCell名称=新的TableCell();
TableCell类型=新的TableCell();
TableCell模型=新的TableCell();
TableRow tr=新的TableRow();
文字特征线=新文字();
特征线。Text=“
”;
文字特征线1=新文字();
breakline1.Text=“
”;
//站点名称列
site.RowSpan=2;
site.Controls.Add(AddSiteField(Machine));
tr.Controls.Add(站点);
//机器名
name.RowSpan=2;
name.Controls.Add(AddMachineField(Machine));
tr.Controls.Add(名称);
//机器类型名称
type.RowSpan=2;
type.Controls.Add(AddMachineTypeField(Machine));
type.Controls.Add(特征线);
type.Controls.Add(AddTypeComboBox(Machine));
tr.Controls.Add(类型);
//机器型号名称
model.RowSpan=2;
添加(AddMachineModelField(Machine));
model.Controls.Add(特征线1);
添加(AddModelComboBox(Machine));
tr.Controls.Add(模型);
AssignPlaceHolder.Controls.Add(tr);
}
此方法使用数据创建和填充行,并将其发送到占位符
我猜问题是我没有添加特征线或新行,或者它没有将上面的方法识别为新行
编辑:
我想达到的目标是这样的
注|是柱之间的间距
地点|机器名称|机器类型|机器型号地点|机器名称
|机器类型|机器型号
我得到的是这个
场地|机器名称|机器类型|机器型号|场地|机器
名称|机器类型|机器型号
没有新行/行
非常感谢您的帮助或建议。谢谢。我想你可以用TableRow
与向表中添加新行不同
您想做什么-每台机器添加两行?第一行包含文本,第二行在最后两列中包含dropdownlists?为此,您需要生成2个TableRow对象,并将下拉列表添加到第二行。因此,类型和模型将不具有rowspan=2
或者,您的问题是,无论Web服务返回多少台机器,只显示一行吗
一旦你添加了这些下拉列表,你认为它们会做一些有趣的事情吗?除非AddTypeComboBox中有一些相当棘手的代码将要执行自动回发,否则我看不到您正在尝试做什么。如果使用DataGrid、GridView等,则可以将它们的数据绑定到包含控件的模板,并对dropdownlist的更改做出反应。切换到ASP.NET MVC并使用AJAX。所有的酷孩子都在这么做。你是想在单元格中添加一条“新线”——中断线,但这行不通,还是说要添加一行?这些下拉列表将用作更新数据库的手段。表的这一部分工作正常,导致问题的原因是它没有为每台机器创建新行,即我的问题是,无论Web服务返回多少台机器,都只显示一行。您似乎正在将这些行添加到占位符中的控件集合中。该占位符中有表标记吗?是否可以尝试将行添加到表对象中?我想我看到了您在添加TableRows时的想法,但我不确定TableRow对象如果不在TableWeb控件中会发出什么HTML。查看swapneel到MSDN的链接,了解表格控件的工作原理。
<br/>