2009-08-18 2 views
1

Это, по-видимому, не представляет собой вопрос, который невозможно решить, но я не могу найти способ заполнить элемент управления HtmlTable (который доступен из кода) с уже включенным объектом HtmlTable заполнены данными.Заполнение HtmlTable-элемента с объектом HtmlTable в ASP/C#

Может ли кто-нибудь помочь мне в этом?

С уважением,

EDIT

На странице ASP, у меня есть таблица HTML с ID = "table1"

В коде, я первый населён HTMLTable объект из списка делает как это:

HtmlTable localTable1 = new HtmlTable(); 
HtmlTableCell cell1 = new HtmlTableCell(); 
HtmlTableCell cell2 = new HtmlTableCell(); 

foreach (Evaluation eval in theEvaluations) 
{ 
    HtmlTableRow anEvaluation = new HtmlTableRow(); 

    cell1.InnerText = eval.attr1; 
    anEvaluation.Cells.Add(cell1); 

    cell2.InnerText = eval.attr2; 
    anEvaluation.Cells.Add(cell2); 

    localTable1.Rows.Add(anEvaluation); 
} 

// And eventually here I should pass the localTable1 to table1 
+0

Вы можете разместить код, чтобы мы могли получить лучшее представление о том, что вы пытаетесь сделать? – BigBlondeViking

+0

Не могли бы вы показать какой-то код, чтобы мы поняли, что у вас есть, и как вы пытаетесь это сделать? – TheVillageIdiot

+0

Конечно !! См. Фрагмент кода ниже – 2009-08-18 16:02:25

ответ

0

Хорошо, я в конце концов все работает, ле Остающаяся проблема была только из-за неправильного декларирования места для объектов HTMLTableCell.

Вот рабочий фрагмент:

foreach (Evaluation eval in theEvaluations) 
{ 
    HtmlTableRow anEvaluation = new HtmlTableRow(); 
    HtmlTableCell cell1 = new HtmlTableCell(); 
    HtmlTableCell cell2 = new HtmlTableCell(); 


    cell1.InnerText = eval.attr1; 
    anEvaluation.Cells.Add(cell1); 

    cell2.InnerText = eval.attr2; 
    anEvaluation.Cells.Add(cell2); 

    table1.Rows.Add(anEvaluation); // table1 : the real HTML table in ASP page 
} 
0

вы используете < таблицу > метки для создания Таблица? Если это так, вы должны использовать тег < asp: Table >, который даст вам доступ к таблице из кода.

1

Похоже, у вас есть таблица и вы пытаетесь сделать что-то вроде

HtmlTable myTable = new HtmlTable(); 
this.myPageTable = myTable; 

Это не то, как это работает. Если у вас есть объект заполненной таблицы, который вы хотите отобразить, тогда создайте литеральный элемент управления и получите доступ к его методу Add() коллекции элементов управления и добавьте объект таблицы. Например:

HtmlTable myTable = new HtmlTable(); 
this.myLiteral.Controls.Add(myTable); 

Или вы должны просто заполнить таблицу непосредственно.

+0

Спасибо Спенсеру, но дело в том, что у меня уже есть точная таблица кадров, установленная на моей странице ASP (в ней указаны заголовки ), и я просто хотел добавить строки ниже – 2009-08-18 16:01:26

+0

. Затем вам нужно получить доступ к коллекции строк table и создать новые объекты HtmlTableRow() вместо целой новой таблицы. –

+0

Итак, вот что я делаю сейчас, и он добавляет строку в мою таблицу ASP, но всегда и только последнюю запись моего исходного списка (который содержит 2 элемента) ... – 2009-08-18 17:29:36

0

Лучшим решением будет передача HtmlTable со страницы на любую функцию, которая заполняет его, если это возможно.

0

На странице ASP, у меня есть таблица HTML с ID = "table1"

В коде, я первый населён HTMLTable объект из списка делают так:

HtmlTable localTable1 = new HtmlTable(); 
HtmlTableCell cell1 = new HtmlTableCell(); 
HtmlTableCell cell2 = new HtmlTableCell(); 

foreach (Evaluation eval in theEvaluations) 
{ 
    HtmlTableRow anEvaluation = new HtmlTableRow();` 

    cell1.InnerText = eval.attr1; 
    anEvaluation.Cells.Add(cell1); 

    cell1.InnerText = eval.attr1; 
    anEvaluation.Cells.Add(cell2); 

    localTable1.Rows.Add(anEvaluation); 
} 

// And eventually here I should pass the localTable1 to table1 
+0

Вы должны отредактировать свой вопрос, если вам нужно добавить информацию вместо ответа. Я приложил это к вашему вопросу, поэтому вам следует просто пойти дальше и удалить этот ответ. –

0

Вы просто создавая работу для себя. Нет необходимости создавать все строки в локальной переменной, если у вас есть ссылка на конечный пункт назначения прямо там.

Попробуйте это:

foreach (Evaluation eval in theEvaluations) 
{ 
    HtmlTableRow anEvaluation = new HtmlTableRow(); 

    cell1.InnerText = eval.attr1; 
    anEvaluation.Cells.Add(cell1); 

    cell1.InnerText = eval.attr1; 
    anEvaluation.Cells.Add(cell2); 

    table1.Rows.Add(anEvaluation); 
} 
+0

Да! Я уже пробовал это, но только последняя добавленная ячейка включена ... – 2009-08-18 16:12:15

+0

Таким образом, единственный способ добавить все разные столбцы - создать экземпляр HtmlTableCell для каждого из них. Но тогда у меня такая же проблема с столбцами: только последний из моих списков «TheEvaluations» присутствует в таблице ASP в конце. Я проверил List.Count, и в нем есть несколько записей ... – 2009-08-18 16:38:04

Смежные вопросы