2017-08-24 74 views
0

對不起,但我需要一些幫助。 我想從我的數據表加載數據到一個wpf數據網格。 目前我正在做這樣的: XAML如何正確加載Sql Server 2016數據表到一個wpf數據網格?

<DataGrid Height="362" Width="auto" Name="grdAngebote" SelectionMode="Single" SelectionUnit="Cell" CanUserResizeColumns="True" CanUserReorderColumns="True" CanUserSortColumns="True"AlternatingRowBackground="LightGray" AlternationCount="2" RowEditEnding="grdAngebote_RowEditEnding"/> 

CS

private void fillDatagrid() 
     { 
      sqlQuery = string.Empty; 
      using (sqlcon = new SqlConnection(sqlConString)) 
      { 
       sqlQuery = "Select ID, Angebotsnummer, Kundenname, Bauvorhaben, KundenstatusID as 'Kundenstatus', AquisekanalID as 'Aquisekanal', Ansprechpartner, AusführungszeitraumID as 'Ausführungszeitraum/Quartal', Auftragssumme, Zuschlagswahrscheinlichkeit as '%', KalkSumme, AngebotsstatusID as 'Angebotsstatus', Absagegrund From Angebote;"; 
       sqlcmd = new SqlCommand(sqlQuery, sqlcon); 
       sqlda = new SqlDataAdapter(sqlcmd); 
       dt = new DataTable("Angebote"); 
       sqlda.Fill(dt); 
       grdAngebote.ItemsSource = dt.DefaultView; 
       string sum; 
       sum = getSum(); 
       sqlcon.Close(); 
       Summe.Content = sum; 
      } 
     } 

一些額外的信息:

private SqlConnection sqlcon; 
private SqlCommand sqlcmd; 
private SqlDataAdapter sqlda; 
private DataTable dt; 

這對我的作品,但在互聯網上的我每天例子看到他們使用{Binding ...}來查看網格中的某些數據是否發生了變化或者類似的情況,否則很難得到例如改變了單元格中的數據並將其更新到我的SQL Server數據庫。 所以我想更新我的程序,也使用綁定,但如何?

我將不勝感激任何形式的幫助或提示。 在此先感謝,祝你有美好的一天!

+0

很大的一個主題遮掩。查看relay命令:http://www.c-sharpcorner.com/UploadFile/20c06b/icommand-and-relaycommand-in-wpf/您正在討論的綁定是綁定到屬性,您可以然後根據需要處理。 – Leonidas199x

+0

如果對象具有ItemSource或DataSource屬性,則不需要綁定。 – jdweng

+0

感謝傢伙的快速答案!我知道這個話題相當大。所以如果我不需要綁定,我怎麼能得到改變的值,例如Roweditending事件之後?我試過它是這樣的:if(e.EditAction == DataGridEditAction.Commit) { Angebot a = new Angebot(); a = e.Row.Item as Angebot;如果(a!=空) { MessageBox.Show(a.Kundenname); } }我錯過了什麼,因爲我的對象總是NULL。 –

回答

1

創建初始化,並公開要綁定到數據的視圖模型類:

public class ViewModel 
{ 
    public ViewModel() 
    { 
     fill(); 
    } 

    private void fill() 
    { 
     sqlQuery = string.Empty; 
     using (sqlcon = new SqlConnection(sqlConString)) 
     { 
      sqlQuery = "Select ID, Angebotsnummer, Kundenname, Bauvorhaben, KundenstatusID as 'Kundenstatus', AquisekanalID as 'Aquisekanal', Ansprechpartner, AusführungszeitraumID as 'Ausführungszeitraum/Quartal', Auftragssumme, Zuschlagswahrscheinlichkeit as '%', KalkSumme, AngebotsstatusID as 'Angebotsstatus', Absagegrund From Angebote;"; 
      sqlcmd = new SqlCommand(sqlQuery, sqlcon); 
      sqlda = new SqlDataAdapter(sqlcmd); 
      dt = new DataTable("Angebote"); 
      sqlda.Fill(dt); 
      DataView = dt.DefaultView; 

      string sum; 
      Sum = getSum(); 
      sqlcon.Close(); 
     } 
    } 

    public DataView DataView { get; private set; } 
    public string Sum { get; private set; } 
} 

設置你的窗口DataContext向視圖模型類的一個實例:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     DataContext = new Window31ViewModel(); 
    } 
} 

綁定到您的XAML中查看模型的屬性:

<DataGrid Name="grdAngebote" ItemsSource="{Binding DataView} " .../> 
... 
<Label x:Name="Summe" Content="{Binding Sum}" /> 
相關問題