Telerik RadGrid - possível fazer uso AllowAutomaticUpdates quando Datasource = um conjunto de dados?
-
20-08-2019 - |
Pergunta
Estou configurando a fonte de dados do meu RadGrid para um conjunto de dados (que eu armazenados na sessão). Tenho habilitado AllowAutomaticUpdates e EnableViewState, implementado NeedDataSource, DataKeyNames set, etc. (ver código abaixo)
No entanto, quando eu pressionar o botão Editar e fazer uma mudança e pressione o link Update, o registro não é atualizado e deixar Edit Mode ..... apenas permanece no modo de edição, e nenhum erro de qualquer tipo ocorre.
Assim, a pergunta é .... Alguém sabe se RadGrid com enableViewState ainda suporta AutomaticUpdates, para que as alterações na grade será empurrado automaticamente para o conjunto de dados ao qual ele está vinculado?
Alguém poderia pensar que você poderia ler a documentação, mas eu tenho sido incapaz de encontrar uma resposta definitiva.
Graças
<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
Solução
Em suma, não é uma questão-chave em jogo aqui:
As operações de "automáticas" são suportados apenas quando você estiver usando um controle de fonte de dados para vincular a grade. Que inclui o ObjectDataSource, assim você pode usar seu DAL com os ODS e depois apoiar auto upserts / atualizações / exclusões.
Quando se liga diretamente a uma tabela de dados, você deve lidar com as atualizações manualmente. Isso porque ele é a fonte de dados não Controles do RadGrid- que estão fornecendo a lógica "auto" para operações CRUD. Felizmente, não é difícil lidar com atualização manualmente, se esse é o caminho que você preferir. Confira alguns dos demos on Telerik.com para exemplos:
http://demos.telerik.com/ aspnet-ajax / grid / examples / dataediting / editmodes / defaultcs.aspx
Você também pode usar o RadGrid com ViewState desabilitado se você quiser. A melhor maneira de fazer isso é usar o apoio da grade de ligação de dados do lado do cliente (embora isso requer que você exponha seu DAL via uma camada de serviço). Confira as demos para que a abordagem aqui:
Espero que ajude! -Todd
Outras dicas
A sua pergunta já foi respondida nos fóruns Telerik: