Как добавить новую строку / перейти к следующей строке в динамически построенной таблице? - PullRequest
0 голосов
/ 25 октября 2011

Хорошо, у меня есть стол, который я строю динамически.У 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);
        }
    }

Получает количество машин, которое предполагается создать для каждой машины.Он получается из БД через веб-сервисы.

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);
    }

Этот метод создает и заполняет строку данными и отправляет ее заполнителю.

Я предполагаю, что проблема заключается в том, что яЛибо я не добавляю строку переноса или новую строку, либо не распознаю описанный выше метод как новую строку.

Редактировать:

То, что я пытаюсь достичь, является чем-то вроде этой заметки |разделение между столбцами.

Сайт |Имя машины |тип машины |сайт модели машины |имя машины |тип машины |модель машины

Что я получу в банкомате?

Сайт |Имя машины |тип машины |модель машины |Сайт |Имя машины |тип машины |модель машины

без новой строки / строки

Любая помощь или предложения с благодарностью.Спасибо.

Ответы [ 3 ]

0 голосов
/ 25 октября 2011
<br/> 

- это НЕ то же самое, что добавление новой строки в таблицу.

Что вы пытаетесь сделать - добавить две строки на машину? Первая строка содержит текст, а вторая содержит выпадающие списки в последних 2 столбцах? Для этого вам нужно сгенерировать 2 объекта TableRow и добавить выпадающие списки во второй ряд. тип и модель, следовательно, не будут иметь rowspan = 2.

Альтернативно, ваша проблема в том, что отображается только одна строка, независимо от количества машин, возвращаемых веб-службой?

Как только вы добавите эти выпадающие списки, вы думаете, что они собираются сделать что-то интересное? Если в AddTypeComboBox нет какого-то довольно хитрого кода, который будет выполнять автоответчик, я не вижу, что вы пытаетесь сделать. Если вы использовали DataGrid, GridView и т. Д., Вы могли бы привязать их данные к шаблону, содержащему элементы управления, и он мог бы реагировать на изменения выпадающего списка.

0 голосов
/ 26 октября 2011

Переключитесь на ASP.NET MVC и используйте AJAX. Все классные дети делают это.

0 голосов
/ 25 октября 2011

Я думаю, вы можете использовать TableRow. - Как: динамически добавлять строки и ячейки в таблицу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...