我将 radGrid 的数据源设置为数据集(我已存储在会话中)。我启用了AllowAutomaticUpdates和EnableViewState,实现了NeedDataSource,设置了DatakeyNames等。(见下面的代码)

但是,当我按“编辑”按钮并进行更改并按“更新”链接时,记录不会更新并离开编辑模式......它只是保持在编辑模式,并且不会发生任何类型的错误。

所以,问题是......有谁知道带有 EnableViewstate 的 radGrid 是否支持自动更新,因此网格中的更改将自动推送到其绑定的数据集中?

有人会认为你可以阅读文档,但我一直无法找到明确的答案。

谢谢


<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
有帮助吗?

解决方案

总之,有一个关键的问题,在这里打球:

当您使用的数据源控件向电网结合的“自动”操作仅支持。这的包括的ObjectDataSource控件,所以你可以使用你的DAL与消耗臭氧层物质,然后支持自动upserts /更新/删除。

当直接绑定到数据表中,则必须手动处理更新。这是因为它是数据源控件 - 不是正在为CRUD操作“自动”逻辑RadGrid-。幸运的是,它并不难,手动处理更新,如果这是你喜欢的路径。检查了一些上Telerik.com演示的为示例:

http://demos.telerik.com/ ASPNET-AJAX /网格/示例/ dataediting / editmodes / defaultcs.aspx

您可以禁用ViewState的,如果你想同时使用radgrid控件。要做到这一点,最好的办法是使用网格的对客户端的数据绑定支持(尽管这确实需要你通过一个服务层暴露你的DAL)。检查出这种做法在这里演示:

http://demos.telerik.com/ ASPNET-AJAX /网格/示例/客户端/ insertupdatedelete / defaultcs.aspx

希望帮助! -Todd

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top