2016-11-10 7 views
0

.csBind TextBox к DataAdapter

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 DТ через TextBox. И данные в текстовом поле не меняются при перемещении по DataGrid dgMain. Как это исправить?

+0

Почему вы используете DataAdapter в первую очередь? Npgsql поддерживает EF - почему бы не следовать нормальному комбинированному потоку данных MvvM/EF? Также вы не показываете нам какую-либо модель просмотра, хотя в DataContext явно есть что-то связанное с предоставлением свойства name. – Maverik

+0

Я не пробовал его в wpf, но в winforms вам нужно сообщить объекту, что имя привязанного значения и отображаемое имя, попробуйте. – Liran

+0

Wpf не Winform :) попытка перетащить вещи по всему приведет только к страданиям. Пожалуйста, потратьте немного времени на изучение того, как на самом деле сделать это правильно. Это тривиальная вещь, с которой вы имеете дело. Присоединяйтесь к нам в WPF Chat Room для получения дополнительной информации: http://chat.stackoverflow.com/rooms/18165/wpf# – Maverik

ответ

0

В этом случае текстовое поле должно быть привязано к DataGrid. Я не нашел пример того, как TextBox связывается с DataTable/DataSet/DataAdapter и сохраняет ту же логику: данные в TextBox будут изменены путем перемещения по DataGrid.