0

나는 collectionviewsource에 의해 사용자에게 노출되는 관찰 가능한 컬렉션이 있습니다. 컬렉션의 항목에 대한 속성 중 하나는 sortorder입니다. 사용자가이 컬렉션을 영구적으로 사용하고 변경 사항을 db에 전파하도록 허용하려고합니다.컬렉션을 영구적으로 정렬합니다.

개별 항목이 목록 상자에 표시 될 때 사용할 수있는 CVS가 작동합니다. 그러나 지금 나는 item.sortorder == cvs.currentindex를 변경해야하고 나는 이것을하기위한 적절한 방법을 찾는데 어려움을 겪고있다.

편집 분명히 내가 충분히 명확하지 않았다. Sortorder는 사용자가 목록 컨트롤에 표시되는 항목의 위치를 ​​제어 할 수있게 해주는 내 개체의 일부인 내 DB의 필드입니다. 나는 사용자에게 sortorder 필드의 값을 표시된 항목의 현재 색인과 동일하게 변경하여 미래에 이러한 항목의 정렬 방식을 변경할 수있는 기능을 제공하려고합니다.

항목 전류 SORTORDER 값 3.

사용자가 이동 한 등이 될 것이다 원래 SORTORDER와

항목 새로운 SORTORDER = 0 항목을 0 (즉, 제 1 위치) 위치 시키도록을 listitem 표시된다

이 것 정렬 된 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); 
      } 
     } 

이것이 모든 상황에서 효과가 있을지는 모르겠지만 분명히 내가 원했던 것을 분명히했다.

0

데이터베이스는 order by 절을 지정하지 않으면 일반적으로 테이블에 추가 된 순서대로 테이블의 행을 반환합니다. 당신의 질문. 데이터베이스의 순서를 변경하는 것은 좋은 생각이 아닙니다. 매개 변수가있는 쿼리를 사용하고 사용자 환경 설정에서 검색된 정렬 할 열과 방향을 전달하는 등의 작업을 시도해보십시오.

관련 문제