Problem z sortowaniem/filtrem listy.

0

Jak w temacie.

Mam aplikację, która wyświetla listę dokumentów. Listę można filtrować po dacie wydania dokumentu (wybierając zakres daty OD - DO i klikając na przycisk "Filtruj"). Ponadto po kliknięciu danego rekordu z listy (dokumentu), po prawej stronie aplikacji pojawia się zawartość wybranego rekordu (numer dokumentu, data wydania itd.).

Wszystko działa prawidłowo do momentu, kiedy użytkownik sortuje dokumenty. Wówczas po kliknięciu na wybrany dokument, wyświetla się zawartość dokumentu sprzed sortowania, czyli wygląda na to, że gridview "nie pamięta", że lista została posortowana.

Kombinując na różne sposoby, napisałam następujący kod, odpowiedzialny za zachowanie listy po sortowaniu:

private void c1TrueDBGridHead_AfterSort(object sender, C1.Win.C1TrueDBGrid.FilterEventArgs e)
        {
            this.dTabCWoodHeadArodes.DefaultView.Sort = e.Condition;
            this.dTabCWoodHeadArodes = this.dTabCWoodHeadArodes.DefaultView.ToTable(true);

            this.c1TrueDBGridHead.SelectedRows.Clear();
            if (this.c1TrueDBGridHead.RowCount > 0)
            {
                this.c1TrueDBGridHead.SelectedRows.Add(0);
                this.c1TrueDBGridHead.Row = 0;
            }
            this.c1TrueDBGridHead.Refresh();
        }

PROBLEM JEST NASTĘPUJĄCY:

Kiedy daję pod komentarz pierwszą część kodu, czyli

            this.dTabCWoodHeadArodes.DefaultView.Sort = e.Condition;
            this.dTabCWoodHeadArodes = this.dTabCWoodHeadArodes.DefaultView.ToTable(true);

Wówczas filtr po dacie działa prawidłowo, ALE po kliknięciu na konkretny dokument po sortowaniu, wyświetla się zawartość innego dokumentu (sprzed sortowania).

Kiedy daję pod komentarz drugą część kodu, czyli

            this.c1TrueDBGridHead.SelectedRows.Clear();
            if (this.c1TrueDBGridHead.RowCount > 0)
            {
                this.c1TrueDBGridHead.SelectedRows.Add(0);
                this.c1TrueDBGridHead.Row = 0;
            }

Wówczas wyświetla się prawidłowa zawartość klikniętego dokumentu po sortowaniu ALE nie działa filtr po sortowaniu (lista po wskazaniu zakresu dat się nie odświeża).

Dodam w razie czego, że kod "ze sobą nie współpracuje", więc odkomentowanie całości nic nie da ;).

Z góry dzięki za pomoc.

Ps. Jestem świeżakiem totalnym, więc liczę na to, że problemem jest jakieś głupie moje niedopatrzenie.

0

Nie chce mi się czytać co Ty tam robisz ale jak chcesz odczytać kliknietyi /zaznaczony wiersz to w jakiś zdarzenuiu typu focusedRowChanged albo ostatecznie OnClick i znaleźć z grida wiersz, który ma Focus.

0

Piszę na czuja trochę, ale spróbuj tego:

this.dTabCWoodHeadArodes.DefaultView.Sort = e.Condition;
var dataView = new DataView(this.dTabCWoodHeadArodes);
dataView.Sort = e.Condition;
this.c1TrueDBGridHead.DataSource = dataView;

1 użytkowników online, w tym zalogowanych: 0, gości: 1