RadGrid无法导出数据,点击Excel导出按钮后命令项栏消失求助
问题解决:RadGrid导出Excel后命令项栏消失
核心原因
页面回发时ReportDate变量的值丢失,导致导出后的回发请求中,DetailDataSource的StartDate参数为空,存储过程返回空数据集,RadGrid绑定空数据后命令项栏被隐藏。
解决方案
将ReportDate的存储改为ViewState,确保回发时参数值不会丢失:
修改后台VB代码
' 替换原有的ReportDate变量定义,改用ViewState存储 Private Property ReportDate As Date Get If ViewState("ReportDate") Is Nothing Then Return Date.Today ' 设置默认值,比如当前日期 Else Return CDate(ViewState("ReportDate")) End If End Get Set(value As Date) ViewState("ReportDate") = value End Set End Property ' 其余方法保持不变 Protected Sub rgPickedDetail_ItemDataBound(sender As Object, e As GridItemEventArgs) If e.Item.GetType() Is GetType(GridDataItem) Then Dim item As GridDataItem = e.Item item.ForeColor = IIf(item("Picked").Text = "True", Color.Green, Color.Red) End If End Sub Protected Sub StartDate_SelectedDateChanged(sender As Object, e As Calendar.SelectedDateChangedEventArgs) ReportDate = e.NewDate SetReportDate() rgPickedDetail.Rebind() End Sub Private Sub SetReportDate() DetailDataSource.SelectParameters("StartDate").DefaultValue = ReportDate End Sub Protected Sub rgPickedDetail_PageIndexChanged(sender As Object, e As GridPageChangedEventArgs) rgPickedDetail.Rebind() End Sub Protected Sub rgPickedDetail_PageSizeChanged(sender As Object, e As GridPageSizeChangedEventArgs) rgPickedDetail.Rebind() End Sub Protected Sub rgPickedDetail_ItemCommand(sender As Object, e As GridCommandEventArgs) If e.CommandName = "ExportToExcel" Then ' 无需额外操作,确保参数保留即可 End If End Sub
额外检查项
- 确认存储过程
GetPickReportDetailData在StartDate为空时是否返回空数据,若为空则参数丢失会直接导致RadGrid无数据。 - 确保RadGrid的
MasterTableView添加ShowHeadersWhenNoRecords="true"属性,避免无数据时隐藏表头和命令栏:
<MasterTableView CommandItemDisplay="Top" HierarchyLoadMode="ServerOnDemand" AllowSorting="false" AutoGenerateColumns="false" DataKeyNames="SerialNum" ShowHeadersWhenNoRecords="true">
内容的提问来源于stack exchange,提问作者Michael Foster
相关产品推荐
相关产品推荐

