0

私は、collectionviewsourceによってユーザーに公開される監視可能なコレクションを持っています。コレクション内の項目のプロパティの1つがsortorderです。私はユーザーがこのコレクションを恒久的に利用し、その変更をdbに伝播できるようにしようとしています。コレクションを永続的に並べ替える

私は個々のアイテムがリストボックスに表示されているので、CVSを使用できます。今私はitem.sortorder == cvs.currentindexを変更する必要があり、私はこれを行う適切な方法を考え出すのに問題があります。

EDIT

は明らかに私は十分に明確ではありませんでした。 Sortorderは、自分のオブジェクトの一部であるDB内のフィールドで、リストコントロールに表示されているアイテムの位置をユーザーが制御できるようにします。私は、sortorderフィールドの値を表示項目の現在のインデックスと等しくなるように変更することによって、ユーザが将来どのようにこれらの項目をソートするかを変更できるようにしています。

商品現在SORTORDER値は3

ユーザが移動し1等となるであろうオリジナルSORTORDERと

アイテム新しいSORTORDER = 0アイテムを0(すなわち第1の位置)の位置にリストアイテムを表示され

これは希望ソートされたCVSをループし、Item.SortOrder = CVS.Item.indexを作成することによって達成されます。

答えて

0

私はそれを理解しました。

私は戻って、私は要素の位置を変更するために使用したコードを見て、私は実際にコレクション自体使用しています:

private void ResortSortableQuestionsVMCollection() 
     { 
      for (int i = 0; i < SortableQuestionsVMCollection.Count; i++) 
      { 
       SortableQuestionsVMCollection[i].SortOrder = i; 
      } 
     } 
:だから私は単純にこれをしなかった

private void OnDecreaseSortOrderCommandExecute() 
     { 
      int index = QuestionsCVS.View.CurrentPosition; 
      QuestionsViewModel item = SelectedQuestionVM; 

      if (item != null && index > 0) 
      { 
       SortableQuestionsVMCollection.RemoveAt(index); 
       SortableQuestionsVMCollection.Insert(index - 1, item); 
       QuestionsCVS.View.Refresh(); 
       QuestionsCVS.View.MoveCurrentTo(item); 
      } 
     } 

これはすべての状況で動作するかどうかはわかりませんが、確かに私はこの1つのためにしたかった。

0

データベースは、通常、order by句を指定しない限り、テーブルに追加された順序でテーブルから行を返します。あなたの質問。データベースの順序を変更することは良い考えではありません。代わりに、パラメータ化されたクエリを使用して、ユーザーの設定から取得されたソートする列と方向を渡すなどの操作を試してください。