64 messaggi dal 04 marzo 2012
Salve dovrei creare una gridview con dei dati prelevati da un paio di tabelle e fin qua ok, devo però creare una colonna con un campo dropdown che deve essere riempito con valori derivanti da una tabella ma questi devono essere filtrati in base ad un campo della gridview.
Mi sapete dare una dritta per cortesia, grazie.
Es.

cod descr dropdown
aaa descr aaa 1
2
3

bbb descr bbb 1
3
4

ccc descr ccc 2
5
6
10.903 messaggi dal 09 febbraio 2002
Contributi
Ciao,
il problema non è simile a questo?
http://forum.aspitalia.com/forum/post/417545/Inserimento-Dropdownlist-Gridview.aspx

Credo che anche in questo caso puoi gestire l'evento RowDataBound che viene scatenato ad ogni riga. Dalla funzione che gestisce l'evento, ottieni un riferimento alla DropDownList e imposta il suo DataSource in base al valore trovato nella riga.

ciao,
Moreno

Enjoy learning and just keep making
38 messaggi dal 30 novembre 2004
www.setteweb.it
Nel rowdataboud:

if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList combo= (DropDownList )e.Row.FindControl("miocontrollo");
recuperi il valore del campo che ti interessa: DataBinder.Eval(e.Row.DataItem, "miocampo").ToString();
if(condizione)
{
   riempi la dropdown andando a prendere i valori che ti servono.
}
}
64 messaggi dal 04 marzo 2012
Scusate il ritardo nella risposta ma é un periodaccio, si avevo iniziato tempo fa questo discorso ma poi mi ero arenato per altri lavori piu' urgenti, ora ritorno.

Stavo seguendo le vostre dritte, ma mi sorge un problema quando cerco di caricare i dati nella DropDown mi viene segnalato il seguente errore "txtOggetto non è né una DataColumn, né una DataRelation per la tabella DefaultView" (vedi codice) avete qualche dritta, graezie.

Protected Sub dgvOggettiObbligatori_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles dgvOggettiObbligatori.RowDataBound
If e.Row.RowType = DataControlRowType.DataRow Then

Try
Dim connectionString = ConfigurationManager.ConnectionStrings("HTS_GestioneConnectionString").ConnectionString

Using conn = New SqlConnection(connectionString)
conn.Open()
Using cmd = conn.CreateCommand()
cmd.CommandText = "SELECT * FROM VW_C_Oggetti WHERE IDOggettoTipo = " & e.Row.DataItem("IDOggettotipo") & " AND Obbligatorio = 1 AND Disattivo = 0 ORDER BY Descrizione"
Using reader = cmd.ExecuteReader()
While reader.Read()
e.Row.DataItem("txtOggetto").Items.Add(New ListItem(reader("Descrizione"), reader("IDOggetto")))
End While
End Using
End Using
End Using

Catch ex As Exception
ClsFileLog.ScriviLog(ex.Message, Session.Item("User"))
End Try
End If
End Sub

<asp:GridView ID="dgvOggettiObbligatori" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataOggObbl">
<Columns>
<asp:BoundField DataField="Codice" HeaderText="Codice"
SortExpression="Codice" />
<asp:BoundField DataField="Descrizione" HeaderText="Descrizione"
SortExpression="Descrizione" />
<asp:TemplateField HeaderText="Oggetto">
<ItemTemplate>
<asp:DropDownList ID="txtOggetto" runat="server">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Prezzo">
<ItemTemplate>
<asp:TextBox ID="txtPrezzo" runat="server"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="IDOggettoTipo" HeaderText="IDOggettoTipo"
InsertVisible="False" ReadOnly="True" SortExpression="IDOggettoTipo" />
</Columns>
</asp:GridView>
38 messaggi dal 30 novembre 2004
www.setteweb.it
devi dare il cast su txtOggetto
DropDownList myDrop = (DropDownList)e.Item.FindControl("txtOggetto")

e a questo aggiungi gli items.

verifica la sintassi che l'ho scritta al volo :)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.