Riempire una dropdownlist in gridview

di il
1 risposte

Riempire una dropdownlist in gridview

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

1 Risposte

  • Re: Riempire una dropdownlist in gridview

    Forse non mi sono spiegato bene, provo ad integrare.

    La dropdownlist si riempie correttamente, e quindi viene identificata dal findcontrol, solo se il valore con cui faccio il bind è impostato staticamente. Se il valore corrisponde (nell'esempio MAC e XXX) la dropdownlist si popola con i valori del database e tutto funziona.
    Se invece il valore non è impostato staticamente il bind fallisce per mancanza del selectedvalue nella DDL.
    Quindi è evidente che il bind viene eseguito prima che io riempia la DDL.....
Devi accedere o registrarti per scrivere nel forum
1 risposte