我試圖找出如何使我的選擇的行到網格的頂部。非常重要的是,我正在使用DevExpress Asp.Net MVC GridView。的DevExpress GridView的MVC自定義排序基於選擇的行
我有以下,這是在字面上糖化幾十個非解決方案結合在一起我最好的嘗試。請注意評論:
settings.Columns.Add("customsort").Settings.SortMode =
DevExpress.XtraGrid.ColumnSortMode.Custom;
settings.CustomColumnSort += (sender, e) => {
if (e.Column.FieldName == "customsort")
{
//these following two lines are supposed to work according to the DX support team, but there is no "grid" object
bool isRow1Selected = grid.Selection.IsRowSelectedByKey(e.GetRow1Value(grid.KeyFieldName));
bool isRow2Selected = grid.Selection.IsRowSelectedByKey(e.GetRow2Value(grid.KeyFieldName));
}
e.Handled = isRow1Selected != isRow2Selected;
if (e.Handled)
{
//I don't even know whether this is right
e.Result = isRow1Selected ? 1 : -1;
}
};
總之,我需要把在上面選中的行,但我不知道怎麼弄了兩行或我比較列的選中狀態。
DevEx版本是15.1
UPDATE:代碼示例:
settings.Columns.Add(column =>
{
//column.FieldName = "customsort";
column.FieldName = "customsort";
column.Caption = "customsort";
column.ColumnType = MVCxGridViewColumnType.Default;
//column.UnboundType = DevExpress.Data.UnboundColumnType.Integer;
column.Settings.SortMode = DevExpress.XtraGrid.ColumnSortMode.Custom;
});
settings.CustomColumnSort += (sender, e) =>
{
var grid = (MVCxGridView)sender;
if (e.Column.FieldName == "customsort")
{
bool isRow1Selected = grid.Selection.IsRowSelectedByKey(e.GetRow1Value(grid.KeyFieldName));
bool isRow2Selected = grid.Selection.IsRowSelectedByKey(e.GetRow2Value(grid.KeyFieldName));
e.Result = isRow2Selected.CompareTo(isRow1Selected);
e.Handled = true;
}
};
如果我點擊 「customsort」 一欄,但它確實執行回發,但排序順序不會改變。所以至少我得到了一個地方,但我還沒有到那裏。
好吧,我可以讓我的自定義排序列任何真正。它只是放在所以我可以手動調用一個Customrow.Sort()方法,將按照選擇排序。謝謝你。 200個互聯網給你。 –
更新:你的代碼編譯得很好。 gridview實際上並沒有在這個列上排序。 –
更新文章與你試過的東西,當我回來時我會看看它。你看過鏈接嗎? Afk現在 – Nkosi