Telerik RadGrid - possível fazer uso AllowAutomaticUpdates quando Datasource = um conjunto de dados?

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

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
Foi útil?

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:

http://demos.telerik.com/ aspnet-ajax / grid / exemplos / client / InsertUpdateDelete / defaultcs.aspx

Espero que ajude! -Todd

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top