Telerik RadGrid - mögliche Verwendung AllowAutomaticUpdates tun, wenn Datenquelle einen Datensatz =?
-
20-08-2019 - |
Frage
Ich stelle die Datenquelle meines RadGrid zu einem Datensatz (die ich in der Sitzung gespeichert haben). Ich habe aktiviert AllowAutomaticUpdates und EnableViewState, implementiert NeedDataSource, Set DataKeyNames usw. (siehe Code unten)
Allerdings, wenn ich auf die Schaltfläche Bearbeiten drücken und eine Änderung vornehmen und den Link Aktualisieren drücken, wird der Datensatz nicht aktualisieren und Edit-Modus verlassen ..... es bleibt nur im Bearbeitungsmodus, und kein Fehler jeglicher Art auftritt.
Also, die Frage ist .... weiß jemand, ob RadGrid mit EnableViewState sogar Automatic unterstützt, so werden die Änderungen in dem Netz automatisch in den Datensatz geschoben werden, an denen es gebunden ist?
Man würde denken, dass Sie die Dokumentation lesen konnten, aber ich habe es nicht gelungen, eine definitive Antwort zu finden.
Danke
<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
Lösung
Kurz gesagt, es ist ein wichtiges Thema hier im Spiel:
Die „Automatik“ Operationen nur dann unterstützt werden, wenn Sie eine Datenquelle Steuerung verwenden das Netz zu binden. Die enthält die Object, so dass Sie Ihre DAL mit dem ODS verwenden können und dann automatische upserts unterstützen / updates / löscht.
Wenn Sie direkt auf eine Datentabelle zu binden, müssen Sie die Updates manuell bearbeiten. Das ist, weil es die Datenquelle Controls- nicht die RadGrid- ist, dass die „auto“ Logik für CRUD-Operationen zur Verfügung stellen. Glücklicherweise ist es nicht schwer Updates manuell zu handhaben, wenn das der Weg, den Sie bevorzugen. Schauen Sie sich einige der Demos auf Telerik.com für Beispiele:
http://demos.telerik.com/ aspnet-ajax / grid / examples / dataediting / editmodes / defaultcs.aspx
Sie können auch die RadGrid mit Viewstate deaktiviert, wenn Sie wollen. Der beste Weg, das zu tun, ist das Netz der Unterstützung für die clientseitige Datenbindung zu verwenden (obwohl das nicht erforderlich, dass Sie Ihre DAL über einen Service Layer aussetzen). Schauen Sie sich die Demos für diesen Ansatz hier:
Ich hoffe, das hilft! -Todd
Andere Tipps
Ihre Frage bereits in den Telerik Foren beantwortet: