private void Dgr_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) { if (data.dataSource == null) { return; } //вот тут int col = e.ColumnIndex; //если индекс = 6, то column будет +1 //это имя поля try { string cName = data.dataColumns[col - 1].srcDataFieldName; Lib.FieldInfo f = data.dataSource.sampleObject.getFieldInfoByFieldClassName(cName); Lib.Sorter.SortingRule _x = data.dataSource.sort.myActualSorter.ruleOnTheField(f); Lib.Sorter myNewSorter = new Lib.Sorter(); Lib.AscDescSortEnum dir = Lib.AscDescSortEnum.Asc; if (_x != null) { if (_x.sortingDirection == Lib.AscDescSortEnum.NotSpecified || _x.sortingDirection == Lib.AscDescSortEnum.Desc) { dir = Lib.AscDescSortEnum.Asc; } else { dir = Lib.AscDescSortEnum.Desc; } } //Logger.log("GRIDSORT", f.fieldClassName +"___"+ dir.ToString()); myNewSorter.addNewSortingRule(f, dir); ImSorted(myNewSorter); setGridHeadersFromSorter(myNewSorter); //data.dataSource.sort.applySorter(myNewSorter); } catch (Exception e1) { //ну просто не будет сортировать fn.dp(e1.Message); } }
private void setGridHeadersFromSorter(Lib.Sorter sorter) { Lib.AscDescSortEnum dir; foreach (Lib.Sorter.SortingRule sr in sorter.sortingRuleList) { dir = sr.sortingDirection; //теперь поставить галочку встолбце грида //нужен метод, который из сортингрулов проставляет заголовки грида //номер столбца грида по fieldInfoObject DataGridViewColumn c = getColumnByClassName(sr.fieldClassName); if (c == null) { continue; } string s = c.HeaderText; string s0 = (dir == Lib.AscDescSortEnum.Asc) ? "^" : "˅"; if (s.Length > 0) { if (s[0].ToString() == "^" || s[0].ToString() == "˅") { s = s0 + " " + fn.substrBeginsFromLtrNo(s, 2); } else { s = s0 + " " + s; } } c.HeaderText = s; } }