首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在GridEX Janus - C#中设置属性SortOrder

如何在GridEX Janus - C#中设置属性SortOrder
EN

Stack Overflow用户
提问于 2019-10-06 14:33:57
回答 2查看 756关注 0票数 0

我需要在GridEx中设置属性SortOrder,该属性仅为get

我能做什么?

代码:

代码语言:javascript
复制
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;
    }
}
EN

回答 2

Stack Overflow用户

发布于 2019-10-06 15:38:19

不推荐的方式:

代码语言:javascript
复制
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的方法,例如:

代码语言:javascript
复制
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);
    }
}
票数 0
EN

Stack Overflow用户

发布于 2019-10-06 18:23:40

经过大量的实验并得到了正确的答案。

如果要按任何其他值对特定字段进行排序,而不是默认情况下,请使用属性:SortComparer并实现IComparer类的Compare()函数

例如,我所做的是:

在加载组件时,写入:

代码语言:javascript
复制
m_Grid.RootTable.Columns["Field1"].SortComparer = new Field1Sort();

要实现的类:

代码语言:javascript
复制
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;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58254816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档