Telerik radGrid: è possibile utilizzare AllowAutomaticUpdates quando Datasource = un set di dati?
-
20-08-2019 - |
Domanda
Sto impostando l'origine dati del mio radGrid su un set di dati (che ho memorizzato in sessione). Ho abilitato AllowAutomaticUpdates e EnableViewState, implementato NeedDataSource, impostato DatakeyNames, ecc. (Vedi codice sotto)
Tuttavia, quando premo il pulsante Modifica e apporto una modifica e premo il collegamento Aggiorna, il record non si aggiorna e esce dalla modalità Modifica ..... rimane solo nella modalità modifica e non si verifica alcun errore di alcun tipo.
Quindi, la domanda è ... qualcuno sa se radGrid con EnableViewstate supporta anche AutomaticUpdates, quindi le modifiche nella griglia verranno automaticamente inserite nel set di dati a cui è vincolata?
Si potrebbe pensare che si possa leggere la documentazione, ma non sono stato in grado di trovare una risposta definitiva.
Grazie
<telerik:Radgrid id="grid" runat="server" AllowPaging="True" AllowSorting="True" AllowAutomaticUpdates="true"
AutoGenerateEditColumn="True" GridLines="None" >
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not IsPostBack Then
Dim data As New DataGateway
Dim ds As DataSet = data.GetEmployeesByProgram(Year:=2009, ProgramName:="Long Term Incentive Stock Program")
Dim dt As DataTable = ds.Tables(0)
ds.Tables(0).PrimaryKey = New DataColumn() {dt.Columns("EmployeeNum"), dt.Columns("ProgramName"), dt.Columns("Year")}
Session("datasource") = ds
With Me.grid
.AllowAutomaticUpdates = True
.AutoGenerateColumns = True
.AllowSorting = True
.AutoGenerateEditColumn = True
.EnableViewState = True 'IS REQUIRED!!!
Me.grid.MasterTableView.AllowAutomaticUpdates = True
Me.grid.MasterTableView.EditMode = GridEditMode.InPlace
End With
End If
End Sub
Private Sub grid_NeedDataSource(ByVal source As Object, ByVal e As Telerik.Web.UI.GridNeedDataSourceEventArgs) Handles grid.NeedDataSource
Debug.WriteLine("NeedDataSource: " & e.RebindReason.ToString)
Dim ds As DataSet = CType(Session("datasource"), DataSet)
Me.grid.MasterTableView.DataKeyNames = New String() {"EmployeeNum", "ProgramName", "Year"}
Me.grid.DataSource = ds
End Sub
Soluzione
In breve, c'è un problema chiave in gioco qui:
Il " automatico " le operazioni sono supportate solo quando si utilizza un controllo Origine dati per associare la griglia. Che include l'ObjectDataSource, in modo da poter utilizzare il DAL con l'ODS e quindi supportare gli aggiornamenti automatici / aggiornamenti / eliminazioni.
Quando si esegue il binding direttamente a una tabella di dati, è necessario gestire manualmente gli aggiornamenti. Questo perché sono i controlli dell'origine dati, non il RadGrid, a fornire il & Quot; auto & Quot; logica per operazioni CRUD. Fortunatamente, non è difficile gestire manualmente l'aggiornamento se questo è il percorso che preferisci. Dai un'occhiata ad alcune demo su Telerik.com per esempi:
Puoi anche usare RadGrid con ViewState disabilitato se vuoi. Il modo migliore per farlo è utilizzare il supporto Grid per la banca dati sul lato client (anche se ciò richiede che tu esponga il DAL tramite un livello di servizio). Dai un'occhiata alle demo per questo approccio qui:
Spero che ti aiuti! -Todd
Altri suggerimenti
La tua domanda ha già ricevuto risposta nei forum di Telerik: