Столкнувшись с такой проблемой, при работе со своим WPF-приложением на C# я вывожу данные из своей базы данных SQL Server через ObservableCollection, из нескольких таблиц одновременно в один datagrid, но могу Никаким образом не взаимодействую с выходными данными. Когда я вывожу данные из одной таблицы, я могу добавлять новые записи, редактировать и удалять существующие.
Код: Выделить всё
public partial class МышьАдминистратор : Page
{
ObservableCollection ListАРМ;
ObservableCollection ListМышь;
public static учетEntities уч;
public МышьАдминистратор()
{
уч = new учетEntities();
InitializeComponent();
ListАРМ = new ObservableCollection();
ListМышь = new ObservableCollection();
var queryАРМ = from a in уч.Автоматизированное_рабочее_место orderby a.Код_АРМ select new { a.Код_АРМ, a.Номер_кабинета, a.Инвентарный_номер_Блока, a.Инвентарный_номер_Монитора, a.Инвентарный_номер_Мыши, a.Инвентарный_номер_Клавиатура, a.Инвентарный_номер_МФУ };
var queryМш = from e in уч.Мышь orderby e.Инвентарный_номер_Мыши select new { e.Инвентарный_номер_Мыши, e.Наименование, e.Тип, e.Код_Обслуживания };
var queryОбсл = from h in уч.Обслуживание orderby h.Код_Обслуживания select new { h.Код_Обслуживания, h.Дата, h.Примечание, h.Стоимость };
var querysumm = from e in уч.Мышь
join a in queryАРМ on e.Инвентарный_номер_Мыши equals a.Инвентарный_номер_Мыши
join g in queryКаб on a.Номер_кабинета equals g.Номер_кабинета
join h in queryОбсл on e.Код_Обслуживания equals h.Код_Обслуживания
select new
{
a.Код_АРМ,
e.Инвентарный_номер_Мыши,
e.Наименование,
e.Тип,
e.Код_Обслуживания,
g.Номер_кабинета,
g.Этаж,
h.Дата,
h.Примечание,
h.Стоимость
};
gr.ItemsSource = querysumm.ToList();
}
private void OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName == "Дата")
(e.Column as DataGridTextColumn).Binding.StringFormat = "dd/MM/yyyy";
}
}
Код: Выделить всё
private void Add_Click(object sender, RoutedEventArgs e)
{
int maxID = (from us in уч.Мышь select us.Инвентарный_номер_Мыши).Max();
Мышь mouse = new Мышь();
mouse.Инвентарный_номер_Мыши = maxID + 1;
Enter(mouse.Инвентарный_номер_Мыши);
}
private void Enter(int IDMouse)
{
Мышь mouse = new Мышь();
mouse.Инвентарный_номер_Мыши = IDMouse;
ListМышь.Add(mouse);
уч.Мышь.Add(mouse);
gr.ScrollIntoView(mouse);
gr.SelectedIndex = gr.Items.Count - 1;
gr.Focus();
gr.IsReadOnly = false;
}
private void Edit_Click(object sender, RoutedEventArgs e)
{
gr.IsReadOnly = false;
if (gr.SelectedItem != null)
{
var cell = gr.SelectedCells[0];
gr.CurrentCell = cell;
}
else
{
gr.CurrentCell = new DataGridCellInfo (gr.Items[0], gr.Columns[0]);
}
gr.BeginEdit();
}
private void Delete_Click(object sender, RoutedEventArgs e)
{
Мышь mouse = gr.SelectedItem as Мышь;
if (mouse != null)
{
MessageBoxResult result = MessageBox.Show("Удалить Изделие под №" + mouse.Инвентарный_номер_Мыши + " с названием: " + mouse.Наименование, "Предупреждение!", MessageBoxButton.OKCancel);
if (result == MessageBoxResult.OK)
{
уч.Мышь.Remove(mouse);
gr.SelectedIndex = gr.SelectedIndex == 0 ? 1 : gr.SelectedIndex - 1;
ListМышь.Remove(mouse);
уч.SaveChanges();
}
}
else
{
MessageBox.Show("Выберите строку для удаления");
}
}
private void Save_Click(object sender, RoutedEventArgs e)
{
уч.SaveChanges();
gr.IsReadOnly = true;
MessageBox.Show("Данные были успешно сохранены");
}
Пользователь Пол Максвелл дал мне полезную рекомендацию, но я получил следующую ошибку:
При INotifyPropertyChanged и «Blocks» в OnPropertyChanged(«Blocks») возвращается ошибка: Ошибка серьезности CS1503. Аргумент 1: невозможно преобразовать из «строки» в System.Windows.DependencyPropertyChangedEventArgs»
< /blockquote>
Подробнее здесь: https://stackoverflow.com/questions/762 ... everal-tab
Мобильная версия