2

我正在使用ultrawebgrid v11.1xmlLoadOnDemand并启用分页以加载超过 100,000 条记录。

我在事件中编写BindGrid()了功能。InitializeDataSource

在每个回发(保存、ExcelExport、Load..)和/或部分回发(页面导航、排序、过滤..)中,我从数据库中获取超过 100,000 条记录并设置网格的数据源。

问题一:

每次从数据库中查询大量数据都需要更多时间。有没有办法只查询一次on load数据,然后在修改网格中的数据时查询数据。

问题 2:

我正在使用UltrawebgridExcelExporter v11.1. 单击导出按钮后,Grid 的数据源在内部初始化InitializeDataSource,从数据库中获取超过 100,000 条记录。

我必须知道,当LoadOnDemand设置xml时,每次我导出到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
4

3 回答 3

3

要回答您的问题 3 - 65535 行不是 Infragistics 限制,它是 Excel 97/2003 格式的限制。解决它的唯一方法是以 Excel 2007+ 格式 (XLSX) 导出

于 2012-06-12T15:42:25.940 回答
1

Infragistics 的答复是将记录拆分到多个工作簿中。因为存在不允许超过 65535 行的限制。

虽然他们的新 WebGrids 解决了这个限制,但我通过导出到 CSV 文件解决了我的问题。

所以这个问题没有明确的答案,只能解决:)

于 2012-06-12T13:49:23.603 回答
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.
    }
于 2017-02-20T18:05:07.133 回答