I have implement a custom provider for RadSpreadsheet as follows:
public
class
MySpreadsheetDocumentProvider : SpreadsheetProviderBase
{
public
string
FilePath {
get
;
set
; }
public
MySpreadsheetDocumentProvider(APD apd,
out
string
errorMessage) :
base
()
{
errorMessage =
string
.Empty;
string
folderPath = $
"{ConfigurationManager.AppSettings["
SpreadsheetFolder
"]}"
;
if
(!Directory.Exists(folderPath))
{
Directory.CreateDirectory(folderPath);
}
FilePath = $
"{folderPath}/{apd.APDId}.xlsx"
;
if
(!File.Exists(FilePath))
{
Workbook workbook =
new
Workbook();
Worksheet worksheet = workbook.AddSheet();
using
(APD_BLL apd_bll =
new
APD_BLL())
{
var apd_data = apd_bll.Get(apd.APDId);
FillWorksheet(worksheet, apd_data);
}
workbook.Save(FilePath);
}
}
public
override
void
SaveWorkbook(Workbook workbook)
{
SpreadsheetDocumentProvider provider =
new
SpreadsheetDocumentProvider(FilePath);
provider.SaveWorkbook(workbook);
}
public
override
List<Worksheet> GetSheets()
{
SpreadsheetDocumentProvider provider =
new
SpreadsheetDocumentProvider(FilePath);
var sheets = provider.GetSheets();
return
sheets;
}
private
static
void
FillWorksheet(Worksheet sheet, IEnumerable<APDYpallhlou> data)
{
.....
}
So the provider looks for an excel file in a predefined location. If the file exists then it is bound to the RadSpreadsheet, otherwise a new file is created. This part of the provider works well with small as well as with bigger files.
The problem is when I try to Save the RadSpreadsheet by clicking the Save button on the toolbar. Save works ok for a few hundred rows. But it fails for a larger number of rows, e.g. 15000 rows. When the Save button is clicked the page freezes and method SaveWorkbook(Workbook workbook) is never invoked.