0
申し訳ありませんが、私はいくつかの助けが必要です。 データテーブルからwpfデータグリッドにデータをロードしようとしています。 は現在、私はこのようにそれをやっている: XAML正しくSQL Server 2016 datatableを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データベースに更新します。 私は私のプログラムを更新したいと思いますし、バインディングも使用しますがどうしますか?
私はあらゆる種類のヘルプやヒントに感謝します。 おかげさまで、ありがとうございました!
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new Window31ViewModel();
}
}
:
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
を設定します。
非常に大きな対象をカバーする。 relayコマンドを見てみましょう:http://www.c-sharpcorner.com/UploadFile/20c06b/icommand-and-relaycommand-in-wpf/あなたが話しているバインディングは、プロパティへのバインディングです。必要に応じて処理します。 – Leonidas199x
オブジェクトにItemSourceまたはDataSourceプロパティがある場合、バインドする必要はありません。 – jdweng
すばらしい回答をいただきありがとうございました!私はこの話題がかなり大きいことを知っています。もし私がバインディングを必要としないのであれば、私はどのように変更値を得ることができますか? Roweditendingイベントの後に?私はこのようにしてみました:if(e.EditAction == DataGridEditAction.Commit) { Angebot a = new Angebot(); a = e.Row.Item as Angebot; if(a!= null) { MessageBox.Show(a.Kundenname); } }私のオブジェクトは常にNULLなので何かが見つからないのですか? –