Telerik radGrid - можно ли использовать AllowAutomaticUpdates, когда Datasource = набор данных? - PullRequest
3 голосов
/ 28 января 2009

Я устанавливаю источник данных моей radGrid в набор данных (который я сохранил в сеансе). Я включил AllowAutomaticUpdates и EnableViewState, реализовал NeedDataSource, установил DatakeyNames и т. Д. (См. Код ниже)

Однако, когда я нажимаю кнопку «Редактировать», вносю изменения и нажимаю ссылку «Обновить», запись не обновляется и не выходит из режима редактирования ..... она просто остается в режиме редактирования, и никаких ошибок не происходит.

Итак, вопрос в том ... кто-нибудь знает, поддерживает ли radGrid с EnableViewstate хотя бы AutomaticUpdates, поэтому изменения в сетке будут автоматически помещаться в набор данных, к которому она привязана?

Можно подумать, что вы могли прочитать документацию, но я не смог найти окончательного ответа.

Спасибо


<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

Ответы [ 2 ]

8 голосов
/ 06 февраля 2009

Короче, здесь есть одна ключевая проблема:

«Автоматические» операции поддерживаются только при использовании элемента управления «Источник данных» для привязки сетки. Это включает ObjectDataSource, так что вы можете использовать свой DAL с ODS, а затем поддерживать автоматическое обновление / обновление / удаление.

При связывании непосредственно с таблицей данных вы должны обрабатывать обновления вручную. Это потому, что элементы управления источником данных, а не RadGrid, предоставляют «автоматическую» логику для операций CRUD. К счастью, нетрудно обработать обновление вручную, если вы предпочитаете этот путь. Посмотрите некоторые примеры на Telerik.com, например:

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

Вы также можете использовать RadGrid с отключенным ViewState, если хотите. Лучший способ сделать это - использовать поддержку Grid для привязки данных на стороне клиента (хотя для этого требуется, чтобы вы выставляли свой DAL через уровень обслуживания). Посмотрите демоверсии этого подхода здесь:

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

Надеюсь, это поможет! -Todd

2 голосов
/ 05 февраля 2009

На ваш вопрос уже дан ответ на форумах Telerik:

http://www.telerik.com/community/forums/aspnet/grid/is-it-possible-to-do-automaticupdates-to-a-dataset.aspx

...