Привет Программы! :)
простой пример, создаю в проекте DataSet - UsersDataSet.xsd, таблица Users из БД. В таблице например, такие поля как id, имя, фамилия, должность.
В интерфейс помещаю группу полей для редактирования данных и список, который наполняю данными из UsersDataSet.
При изменении данных в поле и попытке сохранить, получаю эксепшен: System.InvalidOperationException: Update requires a valid UpdateCommand when passed DataRow collection with modified rows. at WPF1.UsersDataSetTableAdapters.TableAdapterManager.UpdateAll(UsersDataSet dataSet) in UsersDataSet.Designer.cs:line 1259 at WPF1.Window1.btnSave_Click(Object sender, RoutedEventArgs e) in Window1.xaml.cs:line 82
список:
<
ListBox ItemsSource="{Binding Path={}}" IsSynchronizedWithCurrentItem="True">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Content="{Binding Path=Firstname}"></Label>
<Label Content="{Binding Path=Lastname}"></Label>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
поля
<
StackPanel>
<TextBox Height="28" Name="txtUserID" Width="Auto" IsReadOnly="True" Text="{Binding Path=Id, Mode=OneWay}"/>
<TextBox Height="28" Name="txtFirstName" Width="Auto" Text="{Binding Path=Firstname}"/>
<TextBox Height="28" Name="txtLastName" Width="Auto" Text="{Binding Path=Lastname}"/>
</StackPanel>
и кнопка
<
Button Name="btnSave" Width="65" Height="24" Click="btnSave_Click">Save</Button>
часть *.cs файла
private UsersDataSetTableAdapters.UsersTableAdapter taUsers = new UsersDataSetTableAdapters.UsersTableAdapter();
private UsersDataSet dsUsers = new UsersDataSet();
private UsersDataSetTableAdapters.TableAdapterManager taManager = new UsersDataSetTableAdapters.TableAdapterManager();
private CollectionView View;
private
void Window_Loaded(object sender, RoutedEventArgs e)
{
taUsers.Fill(dsUsers.Users);
taManager.UsersTableAdapter = taUsers;
DataContext =
from user in dsUsers.Users orderby user.Lastname select user; // ну или так DataContext = dsUsers.Users;
this.View = (CollectionView)(CollectionViewSource.GetDefaultView(this.dsUsers.Users));
}
private
void btnSave_Click(object sender, RoutedEventArgs e)
{
try { if (dsUsers.HasChanges()) { if ((taManager.UpdateAll(dsUsers) > 0)) { MessageBox.Show("Saved."); } } }
catch (Exception ex) { MessageBox.Show(ex.ToString()); }
}
NO FUN, ALL BRAIN, NO PENIS