Pergunta

Eu tenho um controle gridview aninhado dentro de um controle de repetidora.


O controle do repetidor é databound em pageload e no evento ItemDataBound Eu olho para o controle gridview

Se e.Item.ItemType = ListItemType.Item Então gvw Dim como GridView = DirectCast (e.Item.Controls (3), GridView) gvw.DataSource = GetData () gvw.DataBind () End If

Depois de tudo isso acontece minha página está exibindo os dados de controles de repetidor e dados no gridview, mas o problema é apenas gridviews alternativos têm dados ou seja, a linha 1, 3, 5 ... no controle repetidor tem grade que é databound mas as linhas 2, 4, 6 ... não exibe dados

marcação é - apenas um exemplo

<repeater>
<itemtemplate>
<table>
<tr>
<td>
<gridview />
</td>
</tr>
<tr>
<td>
<label Text='<%# Eval("some_data") %>'
</td>
</tr>
</table>
</itemtemplate>
</repeater>

novamente a marcação acima é apenas um exemplo e é completa

Eu acho que eu estou fazendo algo seriamente errado.

Foi útil?

Solução

Em seu código

If e.Item.ItemType = ListItemType.Item Then Dim gvw As GridView = DirectCast(e.Item.Controls(3), GridView) gvw.DataSource = GetData() gvw.DataBind() End If

você deve adicionar um "OU" cláusula para verificar se o ItemType é um AlternateItem bem

If e.Item.ItemType = ListItemType.Item OR e.Item.ItemType = ListItemType.AlternateItem Then Dim gvw As GridView = DirectCast(e.Item.Controls(3), GridView) gvw.DataSource = GetData() gvw.DataBind() End If
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top