Ho una dropdown list in un edittemplate di una gridview:
<EditItemTemplate>
<asp:DropDownList Width="250" ID="DDLUOA" Runat="server" CssClass="form-control"
SelectedValue='<%# Bind("UOA") %>'>
<asp:ListItem value="MAC">Macchine</asp:ListItem>
<asp:ListItem value="XXX">Altro</asp:ListItem>
</asp:DropDownList>
</EditItemTemplate>
Mi occorre riempirla in runtime.
Lo sto facendo così:
in rowdatabound della gridview
Dim myDropDown As DropDownList
If e.Row.RowType = DataControlRowType.DataRow And Not e.Row.FindControl("DDLUOA") Is Nothing Then
myDropDown = e.Row.FindControl("DDLUOA")
myDropDown.Items.Clear()
ConnessioneSQL.ConnectionString = ConfigurationManager.ConnectionStrings("P10").ToString()
ConnessioneSQL.Open()
Dim Cmd As New System.Data.SqlClient.SqlCommand("Select Attività_OreUOA.codice, max(TAB_UOA.descrizione) as descrizione from Attività_OreUOA inner join tab_uoa on Attività_OreUOA.Codice=TAB_UOA.Codice where Attività_OreUOA.siglaattività = @SIGLA group by Attività_OreUOA.codice", ConnessioneSQL)
Cmd.Parameters.AddWithValue("@SIGLA", DDLAttività.SelectedValue)
Dim DR As System.Data.SqlClient.SqlDataReader = Cmd.ExecuteReader
While DR.Read()
myDropDown.Items.Insert(0, New ListItem(DR("Codice").ToString.Trim & " - " & DR("descrizione").ToString.Trim, DR("Codice").ToString.Trim))
End While
myDropDown.Items.Insert(0, New ListItem("Seleziona...", "Seleziona..."))
DR.Close()
Cmd.Parameters.Clear()
ConnessioneSQL.Dispose()
End If
Il mio problema è che la dropdownlist "appare" solo dopo il bind. Per cui se il codice con cui faccio ill bind è XXX o MAC (i due valori che ho impostato staticamente) tutto funziona altrimenti va in errore perchè il bind non trova il value corretto.
Qual'è il giusto posto per fare il findcontrol? Oppure qual'è la strada giusta?
Grazie