Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何向动态生成的表中添加新行/转到下一行?_C#_Asp.net_Html_Web Services_Dynamic - Fatal编程技术网

C# 如何向动态生成的表中添加新行/转到下一行?

C# 如何向动态生成的表中添加新行/转到下一行?,c#,asp.net,html,web-services,dynamic,C#,Asp.net,Html,Web Services,Dynamic,好的,我有一张动态生成的桌子。ATM我一直在开发的代码在构建表和获取填充表的数据方面没有问题。然而,我的问题是,当表中填充了多行,或者假定为多行时,它只是将表中假定为新行的内容添加到第一个表的末尾。所以我的问题是我在代码中做错了什么,以及如何正确填充表,以便它添加一个新行,而不是仅仅将其添加到第一行 我的代码如下: public void UpdateTableControls() { try { machine = inputsS

好的,我有一张动态生成的桌子。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服务从数据库中获取的

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/>