private void cmdDown_Click(object sender, RoutedEventArgs e) { MCriteriaColumn o = (MCriteriaColumn)(sender as Button).Tag; ReArrangeOrder(vw.SortingColumns, o, true); vw.IsModified = true; }
private void ReArrangeOrder(ObservableCollection <MBaseModel> items, MCriteriaColumn vw, Boolean isDown) { ArrayList arr = new ArrayList(); int currIdx = -1; int min = 99999999; int max = 0; int idx = 0; foreach (MCriteriaColumn v in items) { int seq = int.Parse(v.ItemSeqNo); if (seq < min) { min = seq; } if (seq > max) { max = seq; } if (v.SeqNo.Equals(vw.ItemSeqNo)) { currIdx = idx; } arr.Add(v); idx++; } int cnt = idx++; MCriteriaColumn swap = null; if (isDown) { if (currIdx >= cnt - 1) { //Do nothing, this is the last item in the rows return; } swap = (MCriteriaColumn)arr[currIdx + 1]; } else { //Up if (currIdx <= 0) { //Do nothing, this is the first item return; } swap = (MCriteriaColumn)arr[currIdx - 1]; } CTable o1 = vw.GetDbObject(); CTable o2 = swap.GetDbObject(); String tmp = swap.ItemSeqNo; swap.ItemSeqNo = vw.ItemSeqNo; vw.ItemSeqNo = tmp; vw.SetDbObject(o2); swap.SetDbObject(o1); vw.updateFlag(); swap.updateFlag(); vw.NotifyAllPropertiesChanged(); swap.NotifyAllPropertiesChanged(); }