UltraGrid导出数据到Excel

 NetAdvantage控件中提供了一个很有用的组件,那就是UltraGridExcelExporter,是与UltraGrid绑定使用的组件.
       使用它只需要以下几个步骤就可以实现Grid中的数据导出:
1.     拖放一个UltraGridExcelExporter到Form中
因为是组件,所以出现在IDE的Form设计器下方
2.     Form中有Grid,栏位如下
3.     编写Button事件触发Export动作
注意: 因为Grid中有按钮列, 而导出时不需要带按钮列, 故需要先将其隐藏, 到处成功之后再将其显示(可以写在EndExport事件中)
4.     另外, 如果要加入进度条, 可以写在如下几个事件中
BeginExport – 开始导出时触发该事件, 可以在这里面增加进度条的初始化动作
RowExported – 导出完Grid中的一行时触发, 可以在这里面将进度条的Value加1
EndExport – 导出完毕时触发, 可以在这里面提示数据已经到处完毕




但这样带来一个问题:就是在导出的时候,如果遇到错误,则跑到Exception的catch段中,而此时Grid还未执行EndUpdate动作,
所以UI上是不会重画的,类似于之前的SSDBGrid中的Redraw=false,从而给人感觉很不友好。
现修改为如下方法:
导出的时候还是依旧捕获错误,但不去设置Grid的显示情况,而是通过ExcelExporter的事件去处理Grid的“快照”
try
{
this.Cursor = Cursors.WaitCursor;
this.uGridExcelExporter.Export(this.uGridJournalRuleList, this.saveFileDialogExcel.FileName);
System.Diagnostics.Process.Start(this.saveFileDialogExcel.FileName);
}
catch (System.IO.IOException)
{
MessageHelper.ShowInformation(this, ACTIONS.FileAction.FileAlreadyOpened);
}
catch (System.UnauthorizedAccessException)
{
MessageHelper.ShowInformation(this, ACTIONS.FileAction.NoAccess);
}
catch (Exception ex)
{
MessageHelper.ShowAlert(this, ACTIONS.CommonAction.UnknownError, ex);
}
finally
{
this.Cursor = Cursors.Default;
}
在这个事件中,eventargument提供了对Layout的访问,如下,可以任意更改哪些列显示与否的动作,且这边的更改不会影响到Grid的呈现,跟Grid断开关联了,看起来好像是获得了一份Grid的快照

private void uGridExcelExporter_BeginExport(object sender, UltraWinGrid.ExcelExport.BeginExportEventArgs e)
{
e.Layout.Bands[0].Columns["Edit"].Hidden = true;
}

转载于:https://www.cnblogs.com/doc/articles/1183908.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值