asp.net - mvc - Telerik radGrid: ¿es posible utilizar AllowAutomaticUpdates cuando Datasource=a dataset?
telerik radgrid documentation (2)
Su pregunta ya ha sido respondida en los foros de Telerik:
Estoy configurando el origen de datos de mi radGrid en un conjunto de datos (que he almacenado en la sesión). He habilitado AllowAutomaticUpdates y EnableViewState, implementé NeedDataSource, configuré DatakeyNames, etc. (ver código a continuación)
Sin embargo, cuando presiono el botón Editar y realizo 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 se produce ningún error de ningún tipo.
Entonces, la pregunta es ... ¿alguien sabe si RadGrid con EnableViewstate incluso admite AutomaticUpdates, por lo que los cambios en la grilla serán automáticamente enviados al conjunto de datos al que está vinculado?
Uno pensaría 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
En resumen, hay una cuestión clave en juego aquí:
Las operaciones "automáticas" solo se admiten cuando usa un control Fuente de datos para enlazar la cuadrícula. Eso incluye ObjectDataSource, por lo que puede usar su DAL con el ODS y luego admitir actualizaciones automáticas / actualizaciones / eliminaciones.
Cuando se vincula directamente a una tabla de datos, debe manejar las actualizaciones manualmente. Eso se debe a que son los controles de fuente de datos, no el RadGrid, los que proporcionan la lógica "automática" para las operaciones CRUD. Afortunadamente, no es difícil manejar la actualización manualmente si esa es la ruta que prefieres. Vea algunos de los demos 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 desactivado si lo desea. La mejor manera de hacerlo es usar el soporte de Grid para el enlace de datos del lado del cliente (aunque eso requiere que exponer su DAL a través de una capa de servicio). Eche un vistazo a las demostraciones para ese enfoque aquí:
http://demos.telerik.com/aspnet-ajax/grid/examples/client/insertupdatedelete/defaultcs.aspx
¡Espero que ayude! -Todd