我正在使用ultrawebgrid v11.1
xml LoadOnDemand
并启用分页以加载超过100,000条记录。
我在BindGrid()
事件中写了InitializeDataSource
个功能。
在每个回发(Save,ExcelExport,Load ..)和/或部分回发(页面导航,排序,过滤..)中,我从数据库中获取超过100,000条记录并设置Grid的DataSource。
问题1:
每次从数据库查询大量数据都需要更多时间。有没有办法只查询on load
一次数据,然后修改网格中的数据。
问题2:
我正在使用UltrawebgridExcelExporter v11.1
。单击“导出”按钮,网格的数据源在InitializeDataSource
内初始化,从数据库中提取的记录超过100,000条。
我必须知道当设置xml LoadOnDemand
时,每次导出到excel时,我应该设置
AllowPaging = False
and
LoadOndemand = LoadOnDemand.NotSet
然后绑定网格并导出。
从数据库中获取大量数据需要很长时间,并且绑定它需要更长的时间。绑定后,在导出到excel时会抛出'System Out of Memory'
异常。
问题3:
即使解决了上述问题,我也不确定,我能在Excel 97-2003中导出超过65535行吗?
如何使用xml LoadOnDemand
来优化网格的所有操作的性能。
代码:
Protected Sub UWGrid_InitializeDataSource(ByVal sender As Object, ByVal e As Infragistics.WebUI.UltraWebGrid.UltraGridEventArgs) Handles UWGrid.InitializeDataSource
UWGrid.DataSource = dsData 'record set with 100000 rows.
End Sub
Protected Sub btnExportToExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExportToExcel.Click
UWGrid.DisplayLayout.Pager.AllowPaging = False
UWGrid.DisplayLayout.LoadOnDemand = LoadOnDemand.NotSet
UWGrid.DataBind()
'Dim wBook As New Excel.Workbook(Excel.WorkbookFormat.Excel2007)
UltraWebGridExcelExporter1.DownloadName = "ExportFile.xls"
UltraWebGridExcelExporter1.Export(UWGrid)
End Sub
答案 0 :(得分:3)
要回答问题3 - 65535行不是Infragistics限制,它是Excel 97/2003格式的限制。唯一的解决方法是以Excel 2007+格式(XLSX)导出
答案 1 :(得分:1)
Infragistics的回复是将记录拆分为多个工作簿。因为存在不允许超过65535行的限制。
虽然他们的新WebGrids解决了这个限制,但我通过导出到CSV文件解决了我的问题。
所以对这个问题没有明确的答案,只能解决这个问题:)
答案 2 :(得分:0)
private void Form1_Shown(object sender, EventArgs e)
{
DataTable dt = new DataTable();
dt.Columns.Add("Serial number");
dt.Columns.Add("Name");
dt.Columns.Add("Values");
for (int i = 0; i < 500; i++)
{
dt.Columns.Add("Column" + i.ToString());
}
for (int i = 0; i < 100000; i++)
{
dt.Rows.Add(i.ToString(), "Jipson PJ", (i + 100).ToString());
}
ultraGrid1.DataSource = dt;
}
private void button1_Click(object sender, EventArgs e)
{
Workbook w = new Infragistics.Excel.Workbook();
//w.CurrentFormat = WorkbookFormat.Excel2007;
w.Worksheets.Add(this.Text);
this.ultraGridExcelExporter1.FileLimitBehaviour = Infragistics.Win.UltraWinGrid.ExcelExport.FileLimitBehaviour.TruncateData;
this.ultraGridExcelExporter1.Export(this.ultraGrid1, w.Worksheets[this.Text]);
w.Save("C://Users//jipso//Documents//excel//1.xls"); // Save as .xlsx file name.
}