我需要在GridEx中设置属性SortOrder,该属性仅为get。
我能做什么?
代码:
private void M_Grid_ColumnHeaderClick(object sender, Janus.Windows.GridEX.ColumnActionEventArgs e)
{
if (e.Column.DataMember == "Filed1")
{
var list = m_Grid.DataSource;
if (e.Column.SortOrder == Janus.Windows.GridEX.SortOrder.Descending)
{
list = list.OrderBy(p => p.ParticipationDate).ToList();
e.Column.SortOrder = Janus.Windows.GridEX.SortIndicator.Ascending;// it's not good
}
else
{
list = list.OrderByDescending(p => p.ParticipationDate).ToList();
e.Column.SortOrder = Janus.Windows.GridEX.SortIndicator.Descending;// it's not good
}
m_Grid.DataSource = list;
}
}发布于 2019-10-06 15:38:19
不推荐的方式:
private void M_Grid_ColumnHeaderClick(object sender, Janus.Windows.GridEX.ColumnActionEventArgs e)
{
if (e.Column.DataMember == "Filed1")
{
var list = m_Grid.DataSource;
if (e.Column.SortOrder == Janus.Windows.GridEX.SortOrder.Descending)
{
list = list.OrderBy(p => p.ParticipationDate).ToList();
// e.Column.SortOrder = Janus.Windows.GridEX.SortIndicator.Ascending;
}
else
{
list = list.OrderByDescending(p => p.ParticipationDate).ToList();
// e.Column.SortOrder = Janus.Windows.GridEX.SortIndicator.Descending;
}
m_Grid.DataSource = list;
m_Grid.Refetch();
}
}另一种使用sortkey的方法,例如:
private void M_Grid_ColumnHeaderClick(object sender, Janus.Windows.GridEX.ColumnActionEventArgs e)
{
if (e.Column.DataMember == "Filed1")
{
//Removing any sort key that may be present in the table
m_Grid.RootTable.SortKeys.Clear(); //or can be removed only specific
// sortkey
// get the column to be sorted
column = e.Column;
if (e.Column.SortOrder == Janus.Windows.GridEX.SortOrder.Descending)
{
sortKey = new GridEXSortKey(column, SortOrder.Ascending);
}
else
{
sortKey = new GridEXSortKey(column, SortOrder.Descending);
}
m_Grid.RootTable.SortKeys.Add(sortKey);
}
}发布于 2019-10-06 18:23:40
经过大量的实验并得到了正确的答案。
如果要按任何其他值对特定字段进行排序,而不是默认情况下,请使用属性:SortComparer并实现IComparer类的Compare()函数
例如,我所做的是:
在加载组件时,写入:
m_Grid.RootTable.Columns["Field1"].SortComparer = new Field1Sort();要实现的类:
public class Field1Sort: IComparer
{
public Field1Sort()
{
}
public int Compare(object x, object y)
{
var xString = (string)x;
var yString = (string)y;
var date1 = xString.Substring(0, 10).ToDateTime();
var date2 = yString.Substring(0, 10).ToDateTime();
if (date1 < date2)
return -1;
if (date1 > date2)
return 1;
else
return 0;
}
}https://stackoverflow.com/questions/58254816
复制相似问题