private int ExportPage(StreamWriter sw, List<ColumnDisplayModel> cols, IEnumerable<IDataObject> instances)
{
try
{
var dmvos = instances
.Select(obj => DataObjectViewModel.Fetch(ViewModelFactory, DataContext, ViewModelFactory.GetWorkspace(DataContext), obj));
int count = 0;
// Data
foreach (var obj in dmvos)
{
count += 1;
// This check has to be done AFTER counting
// to avoid the edgecase of pageSize deleted objects followed by more data
if (obj.ObjectState == DataObjectState.Deleted)
continue;
for (int colIdx = 0; colIdx < cols.Count; colIdx++)
{
string val = cols[colIdx].ExtractFormattedValue(obj);
if (val != null)
{
var needsQuoting = val.IndexOfAny(new[] { ';', '\n', '\r', '"' }) >= 0;
if (needsQuoting)
{
val = val.Replace("\"", "\"\"");
val = "\"" + val + "\"";
}
sw.Write(val);
}
if (colIdx < cols.Count - 1)
{
sw.Write(";");
}
else
{
sw.WriteLine();
}
}
}
return count;
}
catch (Exception ex)
{
OnExportPageError(sw, ex);
return 0;
}
}