Telerik RadGrid - mögliche Verwendung AllowAutomaticUpdates tun, wenn Datenquelle einen Datensatz =?

StackOverflow https://stackoverflow.com/questions/488039

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
War es hilfreich?

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:

http://demos.telerik.com/ aspnet-ajax / grid / examples / Client / insertupdatedelete / defaultcs.aspx

Ich hoffe, das hilft! -Todd

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top