簡體   English   中英

無法使用WPF Datagrid和DataAdapter更新本地數據庫

[英]Can't update Local Database using WPF Datagrid & DataAdapter

我試圖將對DataGrid所做的更改反映到本地數據庫(在這種情況下為SQL Server Compact Edition),但失敗。 這是代碼:

        SqlCeConnection conn;
        SqlCeDataAdapter dataAdapter;

        public MainWindow()
        {
        InitializeComponent();
        Init();
    }

    public void Init()
    {
        try
        {
            conn = new SqlCeConnection(@"Data Source = DataModel.sdf");
            dataAdapter = new SqlCeDataAdapter("Select * from Members", conn);
            SqlCeCommandBuilder commandBuilder = new SqlCeCommandBuilder(dataAdapter);
            DataTable dataTable = new DataTable();
            dataAdapter.Fill(dataTable);
            dataTable.RowChanged += dataTable_RowChanged;
            dataTable.RowDeleted += dataTable_RowDeleted;
            membersDataGrid.ItemsSource = dataTable.DefaultView;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }


    }

    void dataTable_RowDeleted(object sender, DataRowChangeEventArgs e)
    {
        dataAdapter.Update(sender as DataTable);
    }

    void dataTable_RowChanged(object sender, DataRowChangeEventArgs e)
    {
        dataAdapter.Update(sender as DataTable);

    }

MembersDataGrid是UI中的DataGrid視圖的名稱。 我做錯了什么嗎? 提前致謝 :-)

這是對我有用的代碼。 除使用我的localDB數據庫(非CE)外,它與您的相似。 另外,請確保在VS外部測試代碼,否則數據庫文件可能會在編譯/執行周期中被覆蓋,並且您將永遠無法看到更改反映在數據庫中。

private void DataGrid_Loaded(object sender, RoutedEventArgs e)
{
    string connstr = ConfigurationManager.ConnectionStrings["WpfApplication14.Properties.Settings.NorthwindConnectionString"].ToString();
    SqlConnection conn = new SqlConnection(connstr);
    CustomersTableAdapter adapter = new CustomersTableAdapter();
    NorthwindDataSet.CustomersDataTable table = new NorthwindDataSet.CustomersDataTable();

    adapter.Fill(table);
    dataGrid1.ItemsSource = table.DefaultView;

    table.RowChanged += table_RowChanged;
}

void table_RowChanged(object sender, System.Data.DataRowChangeEventArgs e)
{
    using (CustomersTableAdapter adapter = new CustomersTableAdapter())
    {
        adapter.Update(sender as NorthwindDataSet.CustomersDataTable);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM