Jak dostać się do Konkretnego pola w ListView (WPF) - pomoc

0

Mam pytanie czy ktoś jest wstanie udzielić mi podpowiedzi jak dostać się w strukturze ListView do pola ocena (wartości wybranej przy pomocy comboBox) sa 3 pola (imie, nazwisko - wczytywane z bazy i 3 pole które jest dodane "ręcznie") o ile do tych dwóch mogę się dobrać wybierając zaznaczony element to nie wiem jak dobrać się 3 kolumny. Jeśli ktoś wie będę wdzięczny za pomoc. Jeśli moje pytanie nie jest jasno sprecyzowane lub wycinek kodu nie jest wystarczający - proszę o uwagę.

<GridViewColumn Header="Imie" Width="130" DisplayMemberBinding="{Binding imie}"/>
<GridViewColumn Header="Nazwisko" Width="130" DisplayMemberBinding="{Binding nazwisko}"/>
<GridViewColumn Header="Ocena">
    <GridViewColumn.CellTemplate >
      <DataTemplate>
        <Grid HorizontalAlignment="Stretch" Width="50" >
           <ComboBox x:Name="ocena" SelectionChanged="ocena_SelectionChanged">
           <ComboBoxItem Content="2"/>
           <ComboBoxItem Content="3"/>
           <ComboBoxItem Content="3.5"/>
           <ComboBoxItem Content="4"/>
           <ComboBoxItem Content="4.5"/>
           <ComboBoxItem Content="5"/>
           </ComboBox>
        </Grid>
      </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn> 
0

może listview.items[index]

0

w ten sposób mogę dostać się do imienia i nazwiska bo są to elementy przesłane jako ItemsSource (spis studentów) ale kolumna oceny jest dodana "ręcznie" i teraz nie wiem jak się do niej dostać - potrzeb mi wiedzieć jaka wartość została wybrana.

0

No dobrze ale SelectionChanged jest zdarzeniem więc ustaw w tym zdarzeniu coś jak kolwiek był zamysł no chyba że to zwykła pomyłka to pobieraj wartość z comboboxa poprzez SelectedItem.

0

ComboBox x:Name="ocena" ale gdy chce odwołać się do OCENA to nie jest widoczna - właśnie chciałem by pokazało MessageBoxa z wybraną wartością (dlatego dodałem to zdarzenie) jednak tak jak mówię nie widzi tego. Widzie jedynie zdarzenie ocena_SelectionChanged.

0

Może doprecyzuje jaki jest zamysł tego - mamy listę studentów (imię , nazwisko) - studenci są wrzuceni do listView z bazy (pokazujemy tylko imie i nazwisko - to 2 pierwsze kolumny) w listview mozna zaznaczac wiecej niz 1 element. 3 kolumna to combobox z ocenami obok każdego studenta. na liście. I na ten przykład wybieram sobie 3,5 u pierwszego i 4 u dziesiątego. Czyli mam 2 zaznaczonych studentów i dodaje im oceny.

foreach(Object selecteditem in listas2.SelectedItems)
{
Student wybrany; // nowy element typu student
wybrany = selecteditem as Student; // nasz zaznaczony student
Kur wybranyk= listak2c.SelectedItem as Kur; // nieistotne w problemie (Kur od KURS)

Oceny nowa = new Oceny();           //nowa ocena
nowa.id_s= wybrany.id_s;             // id studenta wybranego z lsity
nowa.id_k=wybranyk.id_k;            // nieistotne w problemie
nowa.ocena = ???                          // i tu chce przesłać wartość wybrną z COMBOBOXa  ??  To jest właśnie sens mojego pytnia
Admin.AddOcena(nowa);              // i wstawiamy do bazy 

}

0

Ale czemu tak kombinujesz jedna lista jedna kolekcja po co ładować tam coś osobno. Stwórz klasę która będzie zawierać pola Imie, Nazwisko, Ocena i co tam jeszcze Ci potrzeba. Teraz łączysz to z ListView pola Imie, Nazwisko masz zapełnione Ocena jest putsa. Ocenę Bindingujesz do Comboboxa w SelectedItem. I potem jak już poustawiasz jak chcesz to wyciągasz tą liste i w foreach przerabiasz i dodajesz gdzie Ci się podoba. Nie rozdzielaj tego widzę że dużo osób takie jakoś dziwnie próbuje sobie uprzykrzać życie. Jedna kolekcja jeden listview, datagrid czy tym podobne rzeczy. Takie DTO.

0

no wiem że tak można ale ja potrzebuje tak :) chyba musi być możliwość odczytania tej wartości. Dlatego pytam.

0

Noto może użyj Tuple .np var cosik = new List<Tuple<Student, Ocena>>();

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