Вопрос

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

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

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

Затем я хотел добавить это в свою таблицу:

MyTable.Rows.Add(row);

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

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

Это было полезно?

Решение

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

    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.Вам нужно сначала его завернуть.Могут быть более чистые решения, но этот работает.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top