Telerik radGrid: ¿es posible usar AllowAutomaticUpdates cuando Datasource = un conjunto de datos?

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

Pregunta

Estoy configurando la fuente de datos de mi radGrid en un conjunto de datos (que he almacenado en la sesión). He habilitado AllowAutomaticUpdates y EnableViewState, he implementado NeedDataSource, configuré DatakeyNames, etc. (vea el código a continuación)

Sin embargo, cuando presiono el botón Editar y hago un cambio y presiono el enlace Actualizar, el registro no se actualiza y sale del Modo de edición ... simplemente permanece en el modo de edición, y no ocurre ningún tipo de error.

Entonces, la pregunta es ... ¿Alguien sabe si radGrid con EnableViewstate incluso admite AutomaticUpdates, por lo que los cambios en la cuadrícula se insertarán automáticamente en el conjunto de datos al que está vinculado?

Uno podría pensar que podría leer la documentación, pero no he podido encontrar una respuesta definitiva.

Gracias


<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
¿Fue útil?

Solución

En resumen, hay un problema clave en juego aquí:

El " automático " las operaciones solo son compatibles cuando está utilizando un control de Fuente de datos para vincular la cuadrícula. Eso incluye el ObjectDataSource, por lo que puede usar su DAL con el ODS y luego admitir actualizaciones / eliminaciones / actualizaciones automáticas.

Cuando se vincula directamente a una tabla de datos, debe manejar las actualizaciones manualmente. Esto se debe a que son los controles de origen de datos, no el RadGrid, los que proporcionan & Quot; auto & Quot; lógica para operaciones CRUD. Afortunadamente, no es difícil manejar la actualización manualmente si esa es la ruta que prefieres. Echa un vistazo a algunas de las demostraciones en Telerik.com para ver ejemplos:

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

También puede usar RadGrid con ViewState deshabilitado si lo desea. La mejor manera de hacerlo es utilizar el soporte de Grid para el enlace de datos del lado del cliente (aunque eso requiere que exponga su DAL a través de una capa de servicio). Echa un vistazo a las demostraciones de ese enfoque aquí:

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

¡Espero que ayude! -Todd

Otros consejos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top