Laden...

ComboBox SelectedItem

Erstellt von MacWale vor 14 Jahren Letzter Beitrag vor 14 Jahren 5.603 Views
M
MacWale Themenstarter:in
37 Beiträge seit 2008
vor 14 Jahren
ComboBox SelectedItem

Hallo,

ich habe eine ComboBox mit Kontakten:



<DataTemplate x:Key="KontaktTemplate"  >
            
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="40"></ColumnDefinition>
                    <ColumnDefinition Width="*"></ColumnDefinition>
                </Grid.ColumnDefinitions>
                <Image Grid.Column="0" Source="Icons/kontakt.png" Height="32" Width="32" Margin="2"/>
                <StackPanel Grid.Column="1" >
                    <!--<Grid.RowDefinitions>
                        <RowDefinition Height="25"></RowDefinition>
                        <RowDefinition Height="25"></RowDefinition>
                    </Grid.RowDefinitions>-->
                    <TextBlock Grid.Row="0"  FontSize="12" Text="{Binding Path=BEZEICHNUNG}" Foreground="Black" ></TextBlock>
                    <TextBlock Grid.Row="1" FontSize="10" Text="{Binding Path=FIRMA}" Foreground="Black"></TextBlock>
                </StackPanel>
            </Grid>
        </DataTemplate>
<ComboBox Grid.Column="1" Grid.Row="4" Margin="1,1,1,1" Name="cboKontakt" ItemsSource="{Binding}" ItemTemplate="{StaticResource ResourceKey=KontaktTemplate}" SelectionChanged="cboKontakt_SelectionChanged" ></ComboBox>

private void fillKontakte(string guid)
        {
            string sql = "Select guid, bezeichnung, firma from kontakt order by Bezeichnung";
            DataTable dt = DataProvider.GetDataTable(sql, ConnectionString);
            cboKontakt.SelectedValue = "guid";
            cboKontakt.DataContext = dt;

            
        }

Soweit klappt alles, doch wie wähle ich ein bestimmten Kontakt in der Vorauswahl aus. Theoretisch müsste ich ja SelectedItem setzen, jedoch was setze ich hier? Die guid zu setzen alleine reicht nicht.

Für Tipps bin ich dankbar!

Danke im Vorraus!

A
49 Beiträge seit 2009
vor 14 Jahren

meinst du das?


this.comboBox1.SelectedIndex = 1;

(nullbasierend)

M
MacWale Themenstarter:in
37 Beiträge seit 2008
vor 14 Jahren

meinst du das?

  
this.comboBox1.SelectedIndex = 1;  
  

(nullbasierend)

Ja fast...Das es so funktioniert ist mir klar. Ich will aber nicht das erste zweite oder dritte Item vorauswählen, sondern ein bestimmtes. Ich habe die GUID an der Hand und will das Item mit der GUID auswählen.
Erster Gedanke ist halt comboBox1.SelectedItem = guid, aber das geht nicht

L
862 Beiträge seit 2006
vor 14 Jahren

also du solltest zumindest als erstes den DataContext setzten und DANACHT ein Item selektieren.
Was stellt denn die GUID dar? Den Names des Kontakts???

M
MacWale Themenstarter:in
37 Beiträge seit 2008
vor 14 Jahren

DataContext ist gesetzt auf eine DataTable

cboKontakt.DataContext = dt;

In dieser DataTable sind alle Kontakte, die GUID ist der eindeutige Key des Kontaktes.

L
862 Beiträge seit 2006
vor 14 Jahren

Also mit DataContext zuerst setzten meinte ich sowas:

  
private void fillKontakte(string guid)  
        {  
            string sql = "Select guid, bezeichnung, firma from kontakt order by Bezeichnung";  
            DataTable dt = DataProvider.GetDataTable(sql, ConnectionString);  
            cboKontakt.SelectedValue = "guid";  
          //     ^  
          //vertauschen  
          //     v  
            cboKontakt.DataContext = dt;  
        }  
  

Und mit SelectedValue kannst du so vorgehen:
Du gucks zuerst nach welches Element im Table die GUID hat.
Wenn du das Element hast setzt du es als SelectedValue.
Alternativ kannst du auch über SelectedIndex gehen.