Hi
I am trying to sort a Int32 column and it fails if any cell in the column is changed (Same for Group Panel). If I sort the column without cell changes no problem. I tried both creating the columns in xaml and in code with not difference. Also i am binding to an array of object. I also tried both Array and List. Also, the columns that are String sort properly when a cell is changed in the column. Am i missing something?
The code is as follows.
1. Create data class
2. View Model class
3. Main Page code behind
4. Xaml
Thanks
Rich
using System.Collections.ObjectModel;
using System.Collections.Generic;
using System;
namespace RadGridView_SL4_AR_25
{
public class CRow
{
private List<
object
> _Columns = new List<
object
>();
public List<
object
> Columns
{
get { return _Columns; }
set { _Columns = value;}
}
public static ObservableCollection<
CRow
> GetRows()
{
ObservableCollection<
CRow
> rows = new ObservableCollection<
CRow
>();
CRow row;
List<
object
> columns = new List<
object
>();
columns.Add("Lawrence Taylor");
columns.Add("7230 Surfbird Lane");
columns.Add("San Diego");
columns.Add("CA");
columns.Add(92011);
row = new CRow() { Columns = columns };
rows.Add(row);
columns = new List<
object
>();
columns.Add("Phil Simms");
columns.Add("1800 Quarteback Way");
columns.Add("New York");
columns.Add("NY");
columns.Add(73418);
row = new CRow() { Columns = columns };
rows.Add(row);
columns = new List<
object
>();
columns.Add("Mark Bavaro");
columns.Add("412 End Lane");
columns.Add("Philadelphia");
columns.Add("PA");
columns.Add(45722);
row = new CRow() { Columns = columns };
rows.Add(row);
return rows;
}
}
public class ColumnMetadata
{
string _UniqueName;
public string UniqueName
{
get { return _UniqueName; }
set { _UniqueName = value; }
}
string _Header;
public string Header
{
get { return _Header; }
set { _Header = value; }
}
string _DataType;
public string DataType
{
get { return _DataType; }
set { _DataType = value; }
}
public static ObservableCollection<
ColumnMetadata
> GetColumnMetadata()
{
ObservableCollection<
ColumnMetadata
> cols = new ObservableCollection<
ColumnMetadata
>();
ColumnMetadata columnMetadata = new ColumnMetadata();
columnMetadata.UniqueName = "Customer_Name";
columnMetadata.Header = "Name";
columnMetadata.DataType = "System.String";
cols.Add(columnMetadata);
columnMetadata = new ColumnMetadata();
columnMetadata.UniqueName = "Customer_Street";
columnMetadata.Header = "Street";
columnMetadata.DataType = "System.String";
cols.Add(columnMetadata);
columnMetadata = new ColumnMetadata();
columnMetadata.UniqueName = "Customer_City";
columnMetadata.Header = "City";
columnMetadata.DataType = "System.String";
cols.Add(columnMetadata);
columnMetadata = new ColumnMetadata();
columnMetadata.UniqueName = "Customer_State";
columnMetadata.Header = "State";
columnMetadata.DataType = "System.String";
cols.Add(columnMetadata);
columnMetadata = new ColumnMetadata();
columnMetadata.UniqueName = "Customer_ZipCode";
columnMetadata.Header = "Zip Code";
columnMetadata.DataType = "System.Int32";
cols.Add(columnMetadata);
return cols;
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Telerik.Windows.Controls;
using Telerik.Windows.Data;
using System.Collections.ObjectModel;
using System.Windows.Data;
namespace RadGridView_SL4_AR_25
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
}
private void myGrid_Loaded(object sender, RoutedEventArgs e)
{
ObservableCollection<
ColumnMetadata
> columns = ColumnMetadata.GetColumnMetadata();
for (int i = 0; i < columns.Count; i++)
{
myGrid.Columns.Add(new GridViewDataColumn()
{
Header = columns[i].Header,
UniqueName = columns[i].UniqueName,
DataMemberBinding = new Binding("Columns[" + i + "]") { Mode = BindingMode.TwoWay },
DataType = Type.GetType(columns[i].DataType)
});
}
}
}
}