0

嘿,我有某种列属性列表,包含 HeaderName 等信息。我有一个绑定到项目列表的 Datagrid,列与列属性列表类似。

所以现在用户可以调整可见列的位置和宽度。这只能是 30 个可能的列中的 3 个。但我想将列表的“排序”部分保存到旧列表中。

好的,这是我的第一种方法:

var columns = grid.Columns.OrderBy(p => p.DisplayIndex);

        var prop = DynamicManager.GetPropertyGridByTableNameGroupLanguage("Article", 1, 1);
        var orderesProp = from o in columns
                          join i in prop
                          on o.Header.ToString() equals i.PropertyName
                          orderby o.DisplayIndex
                          select new TableProperty
                          {
                              DbPropertyType = i.DbPropertyType,
                              GroupingProperty = i.GroupingProperty,
                              Mandatory = i.Mandatory,
                              MandatoryDB = i.MandatoryDB,
                              MaxValue = i.MaxValue,
                              MaxValueDB = i.MaxValueDB,
                              MinValue = i.MinValue,
                              MinValueDB = i.MinValueDB,
                              PropertyImportCode = i.PropertyImportCode,
                              PropertyName = i.PropertyName,
                              ReadOnly = i.ReadOnly,
                              Searchable = i.Searchable,
                              UIPropertyName = i.UIPropertyName,
                              UIPropertyType = i.UIPropertyType,
                              Visible = i.Visible,
                              VisibleInGrid = i.VisibleInGrid,
                              Width = o.ActualWidth
                          };

当我第一次从列中选择时,我得到了正确排序的列表,但只有 31 个条目中的 3 个。当我先选择道具然后加入列时,我仍然有完整的列表,但没有按 displayindex 正确排序。

你有任何想法如何解决这个问题吗?

4

1 回答 1

0

这个怎么样:

  var orderesProp = from i in prop
                          select new { i = i, o = columns.FirstOrDefault(x => i.Name == x.Name) } into merge
                          orderby merge.o == null ? int.MaxValue : merge.o.DisplayIndex
                          select merge.i;
于 2012-07-11T06:39:18.160 回答