Edit Item di un DataGrid

giovedì 18 settembre 2003 - 20.21

1234 Profilo | Newbie

Ho definito un DropDownList all'interno di una colonna di un DataGrid di tipo Template nella parte Edit. In HTML appare quanto segue:

<EditItemTemplate>
<asp:DropDownList id=ddlEdActCustomer runat="server" Width="104px" AutoPostBack="True"
DataSource="<%# ListCustomers() %>" DataValueField="CusID"
DataTextField="CompanyName" OnSelectedIndexChanged="ddlEdActCustomer_OnChange">
</asp:DropDownList>
</EditItemTemplate>

La proprietà OnSelectedIndexChanged="ddlEdActCustomer_OnChange" dovrebbe permette di accedere al metodo
protected void ddlEdActCustomer_OnChange(object sender, System.EventArgs e) quando si seleziona un altro elemento della dropdownlist, ma in realtà non lo fa: ho provato a mettere un break point in quel punto... ma non ci passa proprio per quel metodo...

Come posso fare?

Admin Profilo | Junior Member

il mio consiglio è quello di non attaccarti all'evento onselectedindexchanged di ogni dropdown... sarebbe un pò difficile da implementare nel tuo caso.

Puoi ovviare al problema, togliendo l'autopostback... e quindi mettere un bottone con commandname="update", e quindi intercettare l'evento UpdateCommand di DataGrid, che ti permette di ricevere il riferimento alla riga che è stata modificata nella griglia.

http://msdn.microsoft.com/library/en-us/cpref/html/frlrfsystemwebuiwebcontrolsdatagridclassupdatecommandtopic.asp?frame=true

Ciao

Stefano Giannone [MCP .NET]

1234 Profilo | Newbie

Grazie per la risposta, ma purtroppo non è quello che cercavo. Ora provo a spiegarmi meglio:

l'autopostback è necessario in quanto alla selezione di un elemento nella DropDownList parte l'evento OnChange che mantiene tutti i dati in variabili e nel frattempo altre 2 DropDownList si aggiornarno.

Esempio: sono in fase di Edit nel DataGrid: i campi di Edit sono
DropDownList Cliente, DropDownList Luogo, DropDownList Progetto: nel momento in cui scelgo un'altro cliente, gli altri due DropDownList si aggiornano automaticamento; in futuro vorrei anche che quando l'utente selezioni un altro luogo anche i progetti si aggiornino di conseguenza... ma il motto è .... un passo per volta.

Se mi sai dare altri consigli, mi farebbe molto comodo... GRAZIE :)

Admin Profilo | Junior Member

un altro consiglio potrebbe essere quello di operare da javascript, se puoi. Puoi? O devi caricarti degli altri dati in base alla selezione ?

Operare da javascript significherebbe recuperare l'istanza del controllo tramite il valore di Control.ClientID che andresti a scrivere nell'outpu e recuperare in qualche modo...

Ciao

Stefano Giannone [MCP .NET]

1234 Profilo | Newbie

Alla domanda "puoi?" ti rispondo penso di sì... ma la seconda domanda non riesco a capirla... l'esempio che ti ho dato mostra che alla selezione carica altri dati, vale a dire gli altri dropdownlist in edit.... tu intendi "altri dati" oltre a quelli?

Admin Profilo | Junior Member

intendo dire se al cambiamento di un valore della prima dropdown ti serve caricare dei dati da DB o da altri fonti non raggiungibili da JS, nelle altre dropdown

1234 Profilo | Newbie

scusa il ritardo ma sono entrata in fase di re-engeneering... un casino... ora avrei una domanda sempre relativo ai Datagrid, quindi non creo una nuova Thread... la mia domanda è molto banale e forse la risposta la so già ... il fatto è che non sono sicura:

Il DataGrid offre dei bottoni di Edit,Update e Cancel: questi possono funzionare solo con le colonne di tipo Template (se configurati correttamente con il richiamo degli handler OnEdit, OnUpdate e OnCancel) ?

Io ho fatto una volta una prova è ho scoperto che quando un DataGrid è alimentato automaticamente (AutoGenerateColumns) oppure si usano delle colonne Template e poi inserisco il bottone Edit,Update e Cancel allora funziona, se invece le colonne sono di tipo Bound non funzionano

Fatemi sapere, grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5