Pergunta

Em uma de nossas páginas, temos uma tabela que tem linhas geradas em tempo de execução. Eu quero mover o conteúdo dessas linhas para fora em suas próprias propriedades de controle e definir sobre ele em tempo de execução, a fim de separar a apresentação do código-behind. Mas ele não está funcionando da maneira que eu estou esperando.

Se eu tiver a minha linha-like herdar o controle de UserControl, então eu posso fazer isso para criar o controle em tempo de execução:

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

Então, eu queria acrescentar que a minha mesa:

MyTable.Rows.Add(row);

Mas fileira não herda de System.Web.UI.HtmlControls.HtmlTableRow ou System.Web.UI.WebControls.TableRow, então você não pode fazer isso. No entanto, se eu faço o meu herdar o controle de um dos dois, então a chamada LoadControl acima reclama que o controle não herda de UserControl.

Qual é a solução feliz aqui? Se é necessária informação adicional, por favor, pergunte.

Foi útil?

Solução

Eu acho que o que você está procurando fazer é esta:

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

O problema como você disse é que seu controle não pode herdar de várias classes de base e você não pode adicionar seu controle diretamente para a coleção de linhas. Você precisa primeiro envolvê-la. Pode haver soluções mais limpas, mas este não funciona.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top