Telerik RadGrid - возможно ли использовать AllowAutomaticUpdates, когда Datasource = набор данных?
-
20-08-2019 - |
Вопрос
Я устанавливаю источник данных моего RadGrid в набор данных (который я сохранил в сеансе).Я включил AllowAutomaticUpdates и EnableViewState, внедрил NeedDataSource, установил имена данных и т.д.(смотрите код ниже)
Однако, когда я нажимаю кнопку Редактирования, вношу изменения и нажимаю ссылку Обновить, запись не обновляется, и я выхожу из режима Редактирования Mode.....it просто остаюсь в режиме редактирования, и никаких ошибок любого рода не возникает.
Итак, вопрос в том .... кто-нибудь знает, поддерживает ли RadGrid с EnableViewState даже автоматические обновления, поэтому изменения в сетке будут автоматически перенесены в набор данных, к которому он привязан?
Можно было бы подумать, что вы могли бы прочитать документацию, но я не смог найти окончательного ответа.
Спасибо
<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 с 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
Надеюсь, это поможет!-Тодд
Другие советы
На ваш вопрос уже был дан ответ на форумах Telerik: