Il DataGrid è uno dei Data Controls più utili che ASP.NET metta a disposizione.
Supporta di default paginazione, ordinamento e modalità di modifica dei dati mostrati.
Tuttavia non ha una funzionalità predefinita per posizionare automaticamente il browser, quando si preme il pulsante di modifica, sulla riga selezionata, rendendo quindi poco utile lo scrolling manuale necessario.
Si può sì utilizzare SmartNavigation, ma è necessario Internet Explorer e poi l'implementazione non è delle migliori.
Ecco quindi che un po' di Javascript, inserito al punto giusto, può aiutare.
La sub DoItemEdit è associata all'evento di pressione del tasto modifica nel DataGrid, ovvero ne rappresenta il valore della proprietà OnEditCommand.
<SCRIPT Runat="Server"> Sub DoItemEdit(obj As Object, objArgs As DataGridCommandEventArgs) ' imposta l'item selezionato nel datagrid MyDataGrid.EditItemIndex = objArgs.Item.ItemIndex ' definisco il codice client-side per andare al record selezionato Dim bookmarkScript as String bookmarkScript += "<s" & "cript language=""JavaScript"">" bookmarkScript += "location.href=""#bookmark" bookmarkScript += """</s" & "cript>" ' aggiungo l'evento alla pagina RegisterClientScriptBlock("Bookmark", bookmarkScript) ' aggiorno la griglia BindDataGrid() End Sub </SCRIPT>
A questo punto non ci resta che aggiungere nella riga selezionata in modifica il bookmark.
Ci sono diversi modi per inserire il bookmark nella pagina, ma sicuramente il più banale è quello di sfruttare la proprietà UpdateText di una EditCommandColumn, che viene visualizzata solo sulla riga attiva in modifica.
Dunque, bisognerà strutturare la DataGrid grossomodo così:
<ASP:DataGrid id="MyDataGrid" runat="server" ... > <Columns> <ASP:EditCommandColumn HeaderText="Operazioni" EditText="Modifica" UpdateText="Aggiorna <a name=""bookmark""/>" CancelText="Annulla" /> </Columns> <ASP:DataGrid>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.