如何向动态构建的表添加新行/转到下一行

本文关键字:一行 新行 动态 构建 添加 | 更新日期: 2023-09-27 18:12:17

好的,所以我有一个表,我正在动态构建。我一直在开发的代码在构建表和获取数据填充表方面没有问题。然而,我的问题是,当表被多行填充时,或者假设有多行,它只是将表中假设的新行添加到第一个表的末尾。所以我的问题是我在代码中做错了什么,以及我如何才能使表正确填充,以便它添加新行,而不仅仅是将其添加到第一行。

我的代码如下:
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);
    }

此方法创建并填充数据行,并将其发送给占位符。

我猜问题是我要么不添加中断点或新行,要么不将上面的方法识别为新行。

编辑:

我想要达到的是这样的东西

Site |机器名称|机器类型|机器型号Site |机器名称|机型|机型

我得到的是这个

站点|机器名称|机器类型|机器型号|站点|机器名称|机器类型|机器型号

没有新的行/行

任何帮助或建议都是非常感谢的。谢谢你。

如何向动态构建的表添加新行/转到下一行

我想你可以使用tablelow。如何:动态添加行和单元格到表

<br/> 

与向表中添加新行不同。

你想做什么-每台机器添加两行吗?第一行包含文本和第二有下拉列表在最后2列?为此,需要生成2个TableRow对象,并将下拉列表添加到第二行。因此,Type和model不具有rowspan=2。

或者,您的问题是,无论web服务返回的机器数量如何,只出现一行?

一旦你添加了这些下拉菜单,你认为他们会做一些有趣的事情吗?除非AddTypeComboBox中有一些非常棘手的代码会做自动回转,否则我看不到你在做什么。如果你使用了DataGrid, GridView等,你可以将它们数据绑定到包含控件的模板上,并且它可以对下拉列表的更改做出反应。

切换到ASP。NET MVC和使用AJAX。所有的酷孩子都这么做。