Creare un DataGrid con posizionamento sulla riga selezionata in modifica

di Daniele Bochicchio, in ASP.NET, DataGrid,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi