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

时间:2011-10-25 19:13:42

标签: c# asp.net html web-services dynamic

好的,我有一张桌子,我正在动态构建。 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就是这个

  

网站|机器名称|机器类型|机器型号|网站|机   名字|机器类型|机器模型

没有新行/行

非常感谢任何帮助或建议。谢谢。

3 个答案:

答案 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。所有很酷的孩子都在这样做。