Non esiste una Column che di default sia in grado di mostrare una DropDownList con i valori presi dalla tabella collegata, ma è possibile aggiungere una TemplateColum al DataGrid per arrivare allo stesso scopo.
L'esempio qui riportato non è completo, ma permette di partire da una struttura ed una logica che possono poi essere facilmente adattabili alla propria realtà.
<SCRIPT RUNAT="SERVER" Language="C#"> DataSet MyDS_Cat; int GetIndex (int ID) { // controlla la colonna ID e restituisci l'indice for (int i = 0; i< MyDS_Cat.Tables[0].Rows.Count; i++) { if (ID == myDS_Cat.Tables[0].Rows<i>["ID"]) return i; } } DataSet Categorie() { // valorizza la variabile solo se non è stato già fatto if (MyDS_Cat == null) { // estrazione del DataSet! } return MyDS_Cat; } </SCRIPT> <ASP:DataGrid id="myDG" AutoGenerateColumns="False" runat="server"> <Columns> <ASP:TemplateColumn HeaderText="Stato"> <ItemTemplate> <%# Databinder.Eval(Container.DataItem, "Desc"))%> </ItemTemplate> <EditItemTemplate>
DataTextField="Desc"
SelectedIndex='<%# GetIndex(Databinder.Eval(Container.DataItem, "ID"))%>'
runat="server" />
La funzione Categorie elenca tutti i possibili valori, estraendoli da una tabella collegata.
La funzione GetIndex invece scorre la lista di tutti i valori contenuti all'interno di questa tabella per restituire la posizione in cui si trova il valore impostato all'interno della tabella principale.
Per approfondimenti sul DataGrid si veda:
Speciale DataGrid di ASP.NET
https://www.aspitalia.com/servizi/focus/mostra.aspx?ID=446
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.