Telerik radGrid - possible d'utiliser AllowAutomaticUpdates lorsque Datasource = un jeu de données?

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

Question

Je suis en train de définir la source de données de mon radGrid sur un jeu de données (que j'ai stocké en session). J'ai activé AllowAutomaticUpdates et EnableViewState, implémenté NeedDataSource, défini DatakeyNames, etc. (voir le code ci-dessous)

Cependant, lorsque j'appuie sur le bouton Éditer, que je modifie et que je clique sur le lien Mettre à jour, l'enregistrement ne se met pas à jour et quitte le mode Édition ... il reste simplement en mode Édition et aucune erreur ne se produit.

La question est donc de savoir si quelqu'un sait si radGrid avec EnableViewstate prend même en charge AutomaticUpdates. Ainsi, les modifications apportées à la grille seront automatiquement insérées dans le jeu de données auquel il est lié.

On pourrait penser que vous pourriez lire la documentation, mais je n’ai pas pu trouver de réponse définitive.

Merci

<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
Était-ce utile?

La solution

En résumé, un problème clé est en jeu ici:

Le " automatique " les opérations ne sont prises en charge que lorsque vous utilisez un contrôle de source de données pour lier la grille. Cela inclut ObjectDataSource afin que vous puissiez utiliser votre DAL avec ODS, puis prendre en charge les upserts / mises à jour / suppressions automatiques.

Lorsque vous liez directement à une table de données, vous devez gérer les mises à jour manuellement. C’est parce que ce sont les contrôles de source de données, et non le RadGrid, qui fournissent le & "Auto &"; logique pour les opérations CRUD. Heureusement, il n'est pas difficile de gérer la mise à jour manuellement si c'est le chemin que vous préférez. Découvrez quelques exemples sur Telerik.com:

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

Vous pouvez également utiliser RadGrid avec ViewState désactivé si vous le souhaitez. La meilleure façon de le faire est d'utiliser le support de la grille pour la liaison de données côté client (bien que cela nécessite que vous exposiez votre DAL via une couche de service). Découvrez les démos de cette approche ici:

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

J'espère que ça aide! -Todd

Autres conseils

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top