Member 13779854 Ответов: 1

Что я могу использовать для интерфейса системы заказа?


Hi, I am currently creating an ordering system using VB.NET and MS Access. I have created 4 tables in the database: tblCustomers, tblProducts, tblOrders and tblOrderDetails. The last table is so that one order can have multiple products. On the home form of the project, I have a tabControl with 4 pages - one for each table with a datagridview displaying each table's contents. I have a series of buttons for the customers and products pages. These are create, delete and refresh. The create button adds a new record to the relevant table in the database. The delete button deletes the selected record from the table n the database and refresh simply refreshes the datagridview.

Проблема, с которой я сталкиваюсь, заключается в создании заказа. Если бы система разрешала только один продукт на заказ, у меня просто была бы кнопка создать на вкладке заказы, где новая запись добавляется в таблицу заказы, которая состоит из выбранного продукта на вкладке продукты и выбранного клиента на вкладке клиенты. Поскольку я могу выбрать только одну строку в tabcontrol, это не будет работать для разрешения нескольких продуктов в одном заказе.

Я не могу придумать другого способа, кроме как иметь какой-то массив и кнопку "Добавить к заказу" на странице продуктов, где выбранный продукт добавляется в массив, а затем вводится в таблицу при отправке. Могу я еще что-нибудь сделать?

Что я уже пробовал:

Я попытался найти компоненты, которые позволят мне выбрать несколько строк в datagridview, но не нашел ни одного.

1 Ответов

Рейтинг:
0

OriginalGriff

Честно говоря, идея вкладочной страницы совсем не кажется пользователю "естественной" - она звучит как пользовательский интерфейс, который прост для разработчика, а это совсем другое дело. Интерфейсы должны быть разработаны вокруг пользователя и сделать его работу максимально простой и легкой (скрывая сложность и фактическую организацию данных за кулисами, так сказать)

Но мультисекция в DataGridView проста - она даже включена по умолчанию свойством MultiSelect и работает с помощью CTRL+Click и SHIFT+Click.

Однако для такого приложения, как это, я бы сделал это так: у меня есть DataGridView для отображения всех продуктов и второй DGV для отображения текущего хода выполнения заказа. Простой клик на товар, и один товар добавляется в заказ. Щелкните правой кнопкой мыши, и появится диалоговое окно с вопросом: "сколько продуктов вам нужно?" прежде чем они тоже будут добавлены. (И очевидно, что одна и та же система click удаляет элементы из заказа DGV - по одному или щелчком правой кнопки мыши для всех.)

Это даже довольно просто сделать: просто обработайте событие MouseClick и посмотрите на MouseEventArgs.Button, чтобы узнать, какая кнопка была нажата.
Чтобы найти строку, вы используете координаты мыши:

Dim r = myDataGridView.HitTest(e.X, e.Y)
Р. Параметр rowindex даст вам информацию вам нужно.

Когда пользователь закончит, кнопка "Заказать" передает информацию в БД.


Member 13779854

@OriginalGriff Спасибо за ответ. Это звучит как отличный способ сделать это. Не знал, что инструмент множественного выбора-это вещь. Я воплощу эту идею в своей программе и посмотрю, как она сработает.

OriginalGriff

Всегда пожалуйста!