Telerik radGrid: è possibile utilizzare AllowAutomaticUpdates quando Datasource = un set di dati?

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

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
È stato utile?

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:

http://demos.telerik.com/ aspnet-ajax / griglia / examples / dataediting / editmodes / defaultcs.aspx

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:

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

Spero che ti aiuti! -Todd

Altri suggerimenti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top