【问题标题】:Bind TextBox to DataAdapter将 TextBox 绑定到 DataAdapter
【发布时间】: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


【解决方案1】:

在这种情况下,TextBox 应该绑定到 DataGrid。我还没有找到 TextBox 如何绑定到 DataTable / DataSet / DataAdapter 并保持相同逻辑的示例:TextBox 中的数据将通过在 DataGrid 上移动来更改。

【讨论】:

    猜你喜欢
    • 2011-05-20
    • 2011-01-28
    • 2014-06-03
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多