我有一个由 VB 编写并使用 telerik .NET UI 控件的参考项目代码。但它在分页时存在问题。这是我的员工页面,它已分为多个页面,但是当我单击其他页面(例如2)时,表上的数据仅显示第1页中的数据,我将页面大小10设置为DefaultPageSize(2中有18个项目)页)。
Public Overrides Sub ViewLoad(ByVal e As System.EventArgs)
Try
SetGridFilter(rgEmployee)
Refresh()
UpdateControlState()
Catch ex As Exception
DisplayException(Me.ViewName, Me.ID, ex)
End Try
End Sub
Public Overrides Sub ViewInit(ByVal e As System.EventArgs)
rgEmployee.AllowCustomPaging = True
rgEmployee.PageSize = Common.Common.DefaultPageSize
'rgEmployee.ClientSettings.EnablePostBackOnRowClick = True
InitControl()
End Sub
Protected Sub InitControl()
Try
Me.ctrlMessageBox.Listener = Me
Me.MainToolBar = tbarLocations
Common.Common.BuildToolbar(Me.MainToolBar, ToolbarItem.Create,
ToolbarItem.Edit,ToolbarItem.Save,
ToolbarItem.Cancel)
CType(MainToolBar.Items(3), RadToolBarButton).CausesValidation = True
CType(Me.MainToolBar.Items(3), RadToolBarButton).Enabled = False
CType(Me.MainToolBar.Items(4), RadToolBarButton).Enabled = False
Me.MainToolBar.OnClientButtonClicking = "OnClientButtonClicking"
'CType(Me.Page, AjaxPage).AjaxManager.ClientEvents.OnRequestStart = "onRequestStart"
Catch ex As Exception
DisplayException(Me.ViewName, Me.ID, ex)
End Try
End Sub
在refresh()函数中调用rgEmployee.Rebind()和html
<tlk:RadPane ID="RadPane3" runat="server" Scrolling="None">
<tlk:RadGrid ID="rgEmployee" runat="server" Height="100%">
<MasterTableView DataKeyNames="ID" ClientDataKeyNames="CODE, EMP_NAME, EMP_AD">
<Columns>
<%--<tlk:GridClientSelectColumn> here --%>
</Columns>
</MasterTableView>
</tlk:RadGrid>
<Common:ctrlMessageBox ID="ctrlMessageBox" runat="server" />
</tlk:RadPane>
<script type="text/javascript">
var enableAjax = true;
function onRequestStart(sender, eventArgs) {
eventArgs.set_enableAjax(enableAjax);
enableAjax = true;
}
</script>
正如我之前提到的,这是一个参考项目,所以我参考了其他分页成功的页面,与“CType(Me.Page, AjaxPage).AjaxManager.ClientEvents.OnRequestStart = "onRequestStart"”调用 javascript 不同HTML(有点傻b/c,我真的对telerik控制了解不多,这也是我第一次看vb代码,所以我不能很好地理解)。我将此代码添加到员工代码隐藏中。它事件不显示任何内容,避免母版页中的内容。问题出在那里吗?
当我更改 rgEmployee.PageSize=20 (没有“CType(Me.Page, AjaxPage).AjaxManager.ClientEvents.OnRequestStart = “onRequestStart””)时,它会正确显示所有数据,并选择 pagesize=10 (支持由 radgrid 提供),它也正确显示为每页 10 个项目(我的意思是第 2 页显示 8 个项目)
您似乎在每次发布页面时都执行更改,这是不建议的,有时可能会导致非常奇怪的行为。
示例:
Public Overrides Sub ViewLoad(ByVal e As System.EventArgs)
If(Not IsPostBack) Then ' You should only
Try
SetGridFilter(rgEmployee)
Refresh()
UpdateControlState()
Catch ex As Exception
DisplayException(Me.ViewName, Me.ID, ex)
End Try
End If
End Sub
您可能会发现以下问题有助于解释原因:页面加载中 IsPostBack 的实现