public virtual List <String> GetDownloadRawVisibleColumns()
        {
            List <String> list      = DownloadRawDataColumnHelper.GetStandardColumns();
            List <String> tableCols = GetVisibleColumns();

            foreach (String col in tableCols)
            {
                if (!list.Contains(col))
                {
                    list.Add(col);
                }
            }
            //remove standard columns used only in table and graph:
            List <String> rem = new List <String>();

            rem.Add(ColumnPicker.CommonNames.YearFormatted.ToString());
            rem.Add(ColumnPicker.CommonNames.SchooltypeLabel.ToString());
            rem.Add(ColumnPicker.CommonNames.OrgLevelLabel.ToString());
            rem.Add(ColumnPicker.CommonNames.LinkedName.ToString());
            rem.Add(ColumnPicker.CommonNames.OrgSchoolTypeLabel.ToString());
            //remove all columns contained in rem List:
            list.RemoveAll(rem.Contains);

            return(list);
        }
 protected virtual SortedList <string, string> GetDownloadRawColumnLabelMapping()
 {
     return(DownloadRawDataColumnHelper.MapStandardColumnsToDownloadLabels());
 }
        protected virtual String GenerateRawCsvData(DataSet ds)
        {
            StringBuilder        data   = new StringBuilder();
            List <String>        labels = new List <string>();
            DataColumnCollection dsCols = ds.Tables[0].Columns;
            DataTable            dt     = ds.Tables[0];

            //replicated from WinssDataGrid onDataBind
            // sort the Data:
            String orderBy = String.Empty;

            Boolean secondarySort = ((WinssDataGrid)datagrid).SelectedSortBySecondarySort;

            orderBy = ((WinssDataGrid)datagrid).OrderBy;

//            throw new Exception(orderBy);

            if (string.IsNullOrEmpty(orderBy))
            {
                orderBy =
                    SligoCS.DAL.WI.SQLHelper.ConvertToCSV(
                        queryMarshaller.BuildOrderByList(dsCols), false
                        );
            }

            orderBy = orderBy.Replace("year ASC", "year DESC");

            dt =
                (secondarySort)
                    ? SligoCS.Web.WI.WebSupportingClasses.WI.DataTableSorter.SecondarySortCompareSelectedFloatToTop(
                    dt, queryMarshaller, orderBy)
                    :SligoCS.Web.WI.WebSupportingClasses.WI.DataTableSorter.SortAndCompareSelectedFloatToTop(
                    dt, queryMarshaller, orderBy)
            ;
            // end sort

            String name;

            foreach (String col in GetDownloadRawVisibleColumns())
            {
                if (dt.Columns.Contains(col))
                {
                    if (GetDownloadRawColumnLabelMapping().ContainsKey(col))
                    {
                        name = GetDownloadRawColumnLabelMapping()[col];
                    }
                    else
                    {
                        name = col;
                    }

                    labels.Add("\"" + DownloadRawDataColumnHelper.NormalizeColumnName(name.Trim()) + "\"");
                }
            }
            data.Append(String.Join(",", labels.ToArray()) + "\r\n");

            foreach (DataRow row in dt.Rows)
            {
                Array         arrRow = row.ItemArray;
                List <String> strRow = new List <String>();
                //quote text:
                foreach (String col in GetDownloadRawVisibleColumns())
                {
                    if (dt.Columns.Contains(col))
                    {
                        strRow.Add("\"" + row[col].ToString().Trim() + "\"");
                    }
                }
                //delimit fields
                data.Append(String.Join(",", strRow.ToArray()) + "\r\n");
            }
            //throw new Exception(data.ToString());
            return(data.ToString());
        }