none
C# WPF .Net 4 Datagrid Probleme beim Speichern per Button RRS feed

  • Frage

  • Hallo Forenuser,

     

    dies ist mein erster Eintrag hier und ich hoffe auf gute Hilfe bei meinem Problem:

    ich habe ein Anwendung, bei der aus einer Datenbank Bestellungen ausgelesen werden die einen bestimmten externen Schlüssel haben.

    Das ganze wird entsprechend an eine Datagrid gebunden.

     

    So sieht das XAML aus

    <UserControl x:Class="JTL_Amazon.J2A_Grid"
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
           xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
           xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
           mc:Ignorable="d" 
           d:DesignHeight="300" d:DesignWidth="300">
      <Grid>
        <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
          <DataGrid AutoGenerateColumns="False" Height="Auto" Name="dataGrid1" VerticalAlignment="Top">
            <DataGrid.Columns x:Uid="toprow">
              <DataGridTextColumn Header="Kunde" IsReadOnly="True" />
              <DataGridTextColumn Header="Bestellnummer" IsReadOnly="True"/>
              <DataGridTextColumn Header="Lieferdatum" IsReadOnly="True"/>
              <DataGridTextColumn Header="Logistiker" IsReadOnly="True"/>
              <DataGridTextColumn Header="TrackingID" IsReadOnly="True" />
              <DataGridTextColumn Header="Erstellt am" IsReadOnly="True" />
              <DataGridCheckBoxColumn Header="Exportieren" />
            </DataGrid.Columns>
          </DataGrid>
        </ScrollViewer>
      </Grid>
    </UserControl>
    
    

    und so der bereich wo die daten eingebunden werden:

    int counter = 0;
    ((DataGridTextColumn)JTL2Amazon_Grid.dataGrid1.Columns[0]).Binding = new Binding("Kunde");
    ((DataGridTextColumn)JTL2Amazon_Grid.dataGrid1.Columns[1]).Binding = new Binding("AmazonID");
    ((DataGridTextColumn)JTL2Amazon_Grid.dataGrid1.Columns[2]).Binding = new Binding("VersandDatum");
    ((DataGridTextColumn)JTL2Amazon_Grid.dataGrid1.Columns[3]).Binding = new Binding("Logistiker");
    ((DataGridTextColumn)JTL2Amazon_Grid.dataGrid1.Columns[4]).Binding = new Binding("TrackingID");
    ((DataGridTextColumn)JTL2Amazon_Grid.dataGrid1.Columns[5]).Binding = new Binding("Erstellt");
    ((DataGridCheckBoxColumn)JTL2Amazon_Grid.dataGrid1.Columns[6]).Binding = new Binding("Versenden") { NotifyOnSourceUpdated = true, NotifyOnTargetUpdated = true };
    gridDataList = new ObservableCollection<order_details>();
    while (dr.Read())
    {
     counter++;
     string kunde = String.Format("{0} {1}", dr["cVorname"], dr["cName"]);
     string bestellung = dr["cInetBestellNr"].ToString();
     string lieferdatum = dr["dLieferdatum"].ToString();
     string logistik = dr["cname"].ToString();
     string dr1 = dr["cIdentCode"].ToString();
     string dr2 = dr["dErstellt"].ToString();
     gridDataList.Add(new order_details(kunde, bestellung, lieferdatum, logistik, dr1, dr2));
    }
    JTL2Amazon_Grid.dataGrid1.ItemsSource = gridDataList;
    

    soweit funktioniert das ganze auch, man erhält eine saubere liste, wo am ende eine chackbox ist, die man auch auswählen kann.

    Das speichern soll hier über einen anderen button laufen der sich im hauptfenster befindet, das funktioniert aber nur indirekt, den wenn man als benutzer eine checkbox auswählt und anhakt, dann direkt auf speichern geht, dann wird diese checkbox als nicht angewählt gesehen.

    erst der zweite klick bringt den richtigen wert.

    ich such schon den ganzen abend nach einer lösung aber irgendwie finden tu ich dazu nichts.

    die klasse die für den aufbau der collection da ist hab ich bereits per interface IEditableObject erweitert und dort per console den status der bearbeitung ausgegeben. und dort wird wie folgt gearbeitet

    vorgehensweise bei Bestätigung der entertaste mit Enter

    klick auf die checkbox
    -BeginEdit
    wert Ändern
    Enter drücken
    -EndEdit

    Würde ich jetzt auf Enter klicken würde alles passen (das kann aber so nicht bleiben, da ich mit dem DAU rechnen muss)

    da kann das ganze nämlich so geschehen, das nach dem er die checkbox auswählt direkt auf senden geht. und da fehlt dann der schritt der die Bestätigung des wertes , bzw wird das erst nach dem Clickevent ausgeführt.

    für mich persönlcih wäre es am schönsten wenn auch der doppelklcik bei einem druck auf eine checkbox weg wäre und man direkt die checkbox ändern könnte ohne vorher das feld zu aktivieren.

    ich hoffe ihr könnt helfen

     

     

    Samstag, 5. Februar 2011 20:07

Antworten