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>
<asp:dropdownlist datasource='<%# Categorie() %>'
DataValueField="ID"
DataTextField="Desc"
SelectedIndex='<%# GetIndex(Databinder.Eval(Container.DataItem, "ID"))%>'
runat="server" />
</EditItemTemplate>
</ASP:TemplateColumn>
</Columns>
</ASP:DataGrid>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
http://www.aspitalia.com/servizi/focus/mostra.aspx?ID=446
Esprimi il tuo giudizio su questo script:
Per procedere devi essere autenticato.
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.









Stampa
Download 




ma chi lo ha scritto questo codice? Funziona davvero?
Continua »»» | Rispondi »»»