If you’re binding an ADO.NET DataTable to Infragistics UltraWebGrid and then programmaticaly sort the grid (e.g. add a column to a band’s SortedColumns collection) you may get an error:
Cannot find column My Column Name.
with stack trace starting from grid databinding and finishing in datatable’s sorting:
at System.Data.DataTable.ParseSortString(String sortString)
at System.Data.DataView.CheckSort(String sort)
at System.Data.DataView.set_Sort(String value)
at Infragistics.WebUI.UltraWebGrid.DBBinding.ProcessDataViewForFillRows(DataView dataView, RowsCollection rows)
at Infragistics.WebUI.UltraWebGrid.DBBinding.FillRows(UltraWebGrid grid, RowsCollection rows, IEnumerable datasource)
at Infragistics.WebUI.UltraWebGrid.DBBinding.BindList(IEnumerable datasource)
at Infragistics.WebUI.UltraWebGrid.DBBinding.DataBind(Object dataSource, String dataMember)
at Infragistics.WebUI.UltraWebGrid.UltraWebGrid.DataBind()
If the grid binds OK without sorting and grouping, but fails with either – most likely the culprit is one of the columns in data table. Sort expression passed to a DataView is a comma separated list of column names to sort by. So, if your column name has a comma in it e.g. “My Column Name, For Real” – this presents a problem, since DataView will try to sort by 2 non-existing columns “My Column Name” (hence the error above) and “For Real”.
One way to deal with the problem is replace the comma with comma-like character “¸” called Cedilla (keystroke Alt+0184). So if after data retrieval you insert a loop like this:
'dtData is a data table already populated with data For Each oCol As DataColumn In dtData.Columns oCol.ColumnName = oCol.ColumnName.Replace(",", "¸") Next
then the sorting will perform correctly and without errors, and comma-like appearance will be preserved in column name.