2016-06-20 6 views
0

Ich möchte eine Datagridview filtern, indem Sie einen Wert in einer Combobox auswählen.Parameter in Where-Klausel übergeben und Rasteransicht aktualisieren - C#

Der obere Teil meines Codes ist ein Formular, das Daten in eine Tabelle auf unserem Server basierend auf einem Kundenprofil einfügt, das aus einer Ansicht gezogen wird, aber wenn ein Benutzer den Kunden in der oberen Combobox wählt, die ich Datagridview möchte zeige frühere Transaktionen aus der Tabelle an.

Der Code unten enthält Kommentare, wo ich den tatsächlichen Code einfügen werde, aber wollte wissen, ob ich auf dem richtigen Weg bin.

private void combobox_SelectedChangeCommitted(object sender, EventArgs e) 
{ 
    // CONNECTION STRING 
    { 
      connection.Open(); 

    //change value into a parameter ready for the next step 

    //run SQL Command (select * from xxxx where column = @parameter) 

    //FILL DATA GRID 

      connection.Close(); 
    } 
    } 

Grüße,

Neil

Antwort

1

Sie Ihre Combobox SelectedItem-Eigenschaft auf Ihre Ansichtsmodell binden sollte etwa so:

SelectedItem="{Binding UserSelection, Mode=TwoWay}" 

Und dann würde in Ihrem Ansichtsmodell Ihrer Immobilie so etwas wie so sein :

private string _userSelection; 
public string UserSelection 
{ 
    get 
    { 
     return _userSelection; 
    } 
    set 
    { 
     _userSelection = value; 
     UpdateData(); 
     OnPropertyChanged(); 
    } 
} 

Dann würden Sie Ihre Datenbank-Code so etwas wie dies umzusetzen:

private void UpdateData(){ 
    Task.Factory.StartNew(()=>{ 
     connection.Open(); 
     DataProperty = yourNewData; 
     connection.Close(); 
    }); 
} 

Auf diese Weise Sie keine Datenbank lesende/aktualisierende auf dem UI-Thread zu tun, Ihre Anwendung sperren.

Natürlich, in einer anständig geschriebenen WPF-Anwendung binden Sie Ihr DataGrid an die DataProperty, die ich im Beispielcode zeigte.