Добавить строку в таблицу во время выполнения - PullRequest
1 голос
/ 30 апреля 2009

На одной из наших страниц у нас есть таблица, в которой строки генерируются во время выполнения. Я хочу переместить содержимое этих строк в их собственный элемент управления и установить для него свойства во время выполнения, чтобы отделить представление от выделенного кода. Но это не работает так, как я ожидаю.

Если у меня есть элемент управления в виде строк, унаследованный от UserControl, я могу сделать это для создания элемента управления во время выполнения:

MyControl row = (MyControl)LoadControl("~/controls/MyControl.ascx");

Затем я хотел добавить это к моей таблице:

MyTable.Rows.Add(row);

Но строка не наследуется от System.Web.UI.HtmlControls.HtmlTableRow или System.Web.UI.WebControls.TableRow, поэтому вы не можете этого сделать. Однако если я сделаю свой элемент управления наследуемым от одного из этих двух элементов, то вызов LoadControl, приведенный выше, будет жаловаться на то, что элемент управления не наследуется от UserControl.

Какое счастливое решение здесь? Если вам нужна дополнительная информация, пожалуйста, спросите.

1 Ответ

4 голосов
/ 30 апреля 2009

Я думаю, что вы хотите сделать следующее:

    MyControl row = (MyControl)LoadControl("~/controls/MyControl.ascx");
    TableCell newCell = new TableCell();
    newCell.Controls.Add(row);
    TableRow newRow = new TableRow();
    newRow.Cells.Add(newCell);
    MyTable.Rows.Add(newRow);

Проблема, как вы заявили, заключается в том, что ваш элемент управления не может наследоваться от нескольких базовых классов, и вы не можете добавить свой элемент управления непосредственно в коллекцию Rows. Вы должны сначала обернуть это. Могут быть более чистые решения, но этот действительно работает.

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