私はかなり長い間悩まされてきた問題を抱えており、私は .NET の初心者であるため、どうしても助けが必要です。
GridView を使用してクエリ結果を表示しています。ただし、エンティティ/LINQ データ ソースに直接挿入する代わりに、Load、Sorting、Paging などのイベントを手動でコーディングします。問題はソートにあります。昇順/降順の状態を維持できません。私が考えることができる可能な解決策の 1 つは、状態をキャッシュすることですが、もっときちんとした別の方法があるように感じます。したがって、他にもっと適したアイデアを提案してもらえますか?
よろしくお願いします!以下は、ソートに使用するコードです。どうやら、列のヘッダーを何回クリックしてもe.SortDirection
常に同じになります。ascending
switch (e.SortExpression)
{
case "Album":
if (e.SortDirection == SortDirection.Ascending)
_orderedResult = from doc in _result
orderby doc.DocumentAlbum.Name ascending
select doc;
else
_orderedResult = from doc in _result
orderby doc.DocumentAlbum.Name descending
select doc;
break;
case "Category":
if (e.SortDirection == SortDirection.Ascending)
_orderedResult = from doc in _result
orderby doc.DocumentCategory.Name ascending
select doc;
else
_orderedResult = from doc in _result
orderby doc.DocumentCategory.Name descending
select doc;
break;
case "Title":
if (e.SortDirection == SortDirection.Ascending)
_orderedResult = from doc in _result
orderby doc.Title ascending
select doc;
else
_orderedResult = from doc in _result
orderby doc.Title descending
select doc;
break;
case "Description":
if (e.SortDirection == SortDirection.Ascending)
_orderedResult = from doc in _result
orderby doc.Description ascending
select doc;
else
_orderedResult = from doc in _result
orderby doc.Description descending
select doc;
break;
case "DateCreated":
if (e.SortDirection == SortDirection.Ascending)
_orderedResult = from doc in _result
orderby doc.DateCreated ascending
select doc;
else
_orderedResult = from doc in _result
orderby doc.DateCreated descending
select doc;
break;
case "DateUpdated":
if (e.SortDirection == SortDirection.Ascending)
_orderedResult = from doc in _result
orderby doc.DateUpdated ascending
select doc;
else
_orderedResult = from doc in _result
orderby doc.DateUpdated descending
select doc;
break;
}