Как добавлять/редактировать/манипулировать данными в моей базе данных SQL Server, если загрузить несколько таблиц в сеткC#

Место общения программистов C#
Ответить
Anonymous
 Как добавлять/редактировать/манипулировать данными в моей базе данных SQL Server, если загрузить несколько таблиц в сетк

Сообщение Anonymous »

Как добавлять, редактировать и удалять (манипулировать) данными в моей базе данных SQL Server, работая через ObservableCollection, если я загружаю несколько таблиц в сетку данных, решение реализуется в проекте WPF на C#. >
Столкнувшись с такой проблемой, при работе со своим 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("Данные были успешно сохранены");
}
UPD:

Пользователь Пол Максвелл дал мне полезную рекомендацию, но я получил следующую ошибку:

При INotifyPropertyChanged и «Blocks» в OnPropertyChanged(«Blocks») возвращается ошибка: Ошибка серьезности CS1503. Аргумент 1: невозможно преобразовать из «строки» в System.Windows.DependencyPropertyChangedEventArgs»
< /blockquote>

Подробнее здесь: https://stackoverflow.com/questions/762 ... everal-tab
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»