【发布时间】:2016-11-10 13:28:30
【问题描述】:
.cs
DataTable dt;
NpgsqlDataAdapter adapter;
NpgsqlCommand selcmd, upcmd, delcmd, inscmd;
NpgsqlConnection conn;
NpgsqlTransaction tran;
public void ReadAndFill()
{
conn.Open();
tran = conn.BeginTransaction();
selcmd.Connection = conn;
selcmd.Transaction = tran;
dt.Clear();
adapter.Fill(dt);
dgMain.ItemsSource = dt.DefaultView;
tran.Commit();
conn.Close();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
ReadAndFill();
DataContext = dt;
}
.xaml
<DataGrid x:Name="dgMain" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="1" AutoGenerateColumns="False"/>
<TextBox x:Name="textBox" Height="23" TextWrapping="Wrap" Text="{Binding name}" Width="120"/>
所以我只能通过文本框编辑 DataTable dt 的第一行。当您在 DataGrid dgMain 上移动时,textBox 中的数据不会改变。如何解决?
【问题讨论】:
-
你为什么首先使用 DataAdapter? Npgsql 支持 EF - 为什么不遵循正常的 MvvM/EF 组合数据流?此外,尽管您显然在 DataContext 中绑定了一些最终提供
name属性的东西,但您也没有向我们展示任何视图模型。 -
我没有在 wpf 中尝试过,但是在 winforms 中你需要告诉对象绑定的值名称和显示名称是什么,试试吧。
-
Wpf 不是 Winform :) 试图移植东西只会导致痛苦。请花一点时间来学习如何以正确的方式真正做到这一点。这是你正在处理的一件微不足道的事情。加入我们的 WPF 聊天室以获得更多指导:chat.stackoverflow.com/rooms/18165/wpf#
-
我不想使用 MVVM 模式。所以我不想创建模型和视图模型。我不想创建一个类来存储数据库表的记录,也不想使用该类的对象集合。所以我不想使用EF。我想通过适配器/数据集处理数据库的数据。我能以某种方式实现数据库的这种工作逻辑吗?
标签: c# wpf data-binding datatable dataadapter