Есть база данных магазина (3 таблицы). Нужно выводить данные в datagrid, а также в нем же добавлять, обновлять, удалять и искать записи. Сейчас работает только одна таблица. Пытался сделать несколько интерпретаций, но не могу додуматься как это сделать. Чтобы тут не мусорить, заливаю весь код отдельно. То, что помечено комментариями работает, но не так как нужно. К примеру, что пытался сделать через switch не позволяет вводить в ячейки datagrid, вообще поля не открываются. А при загрузке, то что помечено комментариями дает сбой - кнопки добавить и удалить работают, но в базе ничего не обновляется. Прошу строго не судить, знаю быдлокод, но я только учусь) Ссылка на весь код
Как это выглядит
namespace WpfApp1
{
public partial class MainWindow : Window
{
string connectionString;
SqlDataAdapter adapter;
DataTable stuffTable;
public MainWindow()
{
InitializeComponent();
connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
string sql;
stuffTable = new DataTable();
SqlConnection connection = null;
try
{
connection = new SqlConnection(connectionString);
sql = "SELECT * FROM Stuff";
SqlCommand command = new SqlCommand(sql, connection);
adapter = new SqlDataAdapter(command);
// установка команды на добавление для вызова хранимой процедуры
adapter.InsertCommand = new SqlCommand("InsertStuff", connection);
adapter.InsertCommand.CommandType = CommandType.StoredProcedure;
adapter.InsertCommand.Parameters.Add(new SqlParameter("@FIO", SqlDbType.VarChar, 60, "FIO"));
adapter.InsertCommand.Parameters.Add(new SqlParameter("@Age", SqlDbType.Int, 0, "Age"));
adapter.InsertCommand.Parameters.Add(new SqlParameter("@Position", SqlDbType.VarChar, 50, "Position"));
adapter.InsertCommand.Parameters.Add(new SqlParameter("@Salary", SqlDbType.Float, 0, "Salary"));
adapter.InsertCommand.Parameters.Add(new SqlParameter("@Rate", SqlDbType.Int, 0, "Rate"));
SqlParameter parameter = adapter.InsertCommand.Parameters.Add("@Id", SqlDbType.Int, 0, "Id");
parameter.Direction = ParameterDirection.Output;
connection.Open();
adapter.Fill(stuffTable);
stuffGrid.ItemsSource = stuffTable.DefaultView;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (connection != null)
connection.Close();
}
}
private void TabControl_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
private void UpdateDB(DataTable table)
{
SqlCommandBuilder comandbuilder = new SqlCommandBuilder(adapter);
adapter.Update(table);
}
private void deleteButton_Click(object sender, RoutedEventArgs e)
{
if (stuffGrid.SelectedItems != null)
{
for (int i = 0; i < stuffGrid.SelectedItems.Count; i++)
{
DataRowView datarowView = stuffGrid.SelectedItems[i] as DataRowView;
if (datarowView != null)
{
DataRow dataRow = (DataRow)datarowView.Row;
dataRow.Delete();
}
}
}
UpdateDB(stuffTable);
}
private void search_Click(object sender, RoutedEventArgs e)
{
string sql = $"SELECT * FROM Stuff WHERE FIO LIKE '%{dbFind.Text}%' OR Age LIKE '%{dbFind.Text}%' OR" +
$" Position LIKE '%{dbFind.Text}%' OR Salary LIKE '%{dbFind.Text}%' OR Rate LIKE '%{dbFind.Text}%'";
stuffTable = new DataTable();
SqlConnection connection = null;
try
{
popup1.IsOpen = true;
connection = new SqlConnection(connectionString);
SqlCommand command = new SqlCommand(sql, connection);
adapter = new SqlDataAdapter(command);
DataTable dt = new DataTable();
stuffGrid_Find.AutoGenerateColumns = true;
connection.Open();
adapter.Fill(stuffTable);
stuffGrid_Find.ItemsSource = stuffTable.DefaultView;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (connection != null)
connection.Close();
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
UpdateDB(stuffTable);
}
}
}
Код выше работает, но только для 1 таблицы. Помогите для еще 2) Достаточно подтолкнуть!
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть класс, содержащий оператор приведения типа int к типу этого класса
Пишу тестовый веб-сайт, где пробую разные аспекты CQRS (сначала это была самопальная реализация cqrs, потом попробовал MediatR)
У меня имеется база данных и мне надо отсортировать данные в нейЯ создал массив строк и хочу сравнить их с нужным столбцом в каждой строке...