![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| St33l |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
Очень нужна ваша помощь и совет, как лучше поступить.
Принцип такой: есть таблица с выбранными, допустим, товарами. И есть справочник товаров (он тянется из БД). Выглядит примерно так: основная форма, на ней таблица пустая. Вторая форма. Там комбобокс с наимнованием товара, под ним datagrid с его характеристиками. Необходимо, чтобы пользователь выбирал нужный товар, жал кнопку "добавить", форма 2 закрывается, а на первой форме в таблице появляется выбранный им товар. При этом как зеркало таблицы в памяти существует List с этими же выбранными товарами. В дальнейшем он будет использоваться для математических вычислений. Как и что сейчас уже сделано: на второй форме создан datasource для таблицы (инфо из БД), bindingsource. И таблица, и комбобокс завязаны на биндинг. На первой форме:
А теперь вопрос, как реализовать это самое копирование? И как правильно это делать? Я правильно понимаю, что нужно копировать из биндинга второго (который на 2 форме) в биндинг первый? Или нужно из второго в лист копировать? Как правильно, чтобы данные в list и таблице были синхронизированны? |
|||
|
||||
| HellMasterHaiL |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 181 Регистрация: 9.8.2006 Где: Россия, МО, г. Юб илейный Репутация: нет Всего: 1 |
Если я правильно понял, то примерно следующим образом (возможно не лучший и не самый правильный вариант):
На второй форме создаешь событие, которое возвращает запись (DataRow) для таблицы первой формы (на сколько понимаю структура данных (колво и наименование столбцов) твоих товаров одинаковая). На первой форме это событие отлавливаешь и в датасетесоздаешь запись, возвращаемую событием. Примерно:
и в принципе все. Чтобы данные были синхронизированы и в гриде на форме и в твоем листе (List) они должни быть привязаны к одному и тому BindingSource, ну или к одному DataSet. |
|||
|
||||
| St33l |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
немного не то, потому что важно заполнение объекта List.
Пробовал вот так:
но выдало ошибку о несовместимости типов (DataRow, т.к. товары тянутся из базы, и Tovar, т.к. датасорс для lstTovarBindingSource это List<Tovar>). Теперь вот думаю, как дальше быть? Пока на ум приходит только 1 вариант. Создание промежуточного объекта типа Tovar и РУЧНОГО (путем присвоения его свойствам значений из таблицы) заполнения его характеристик. А потом уже объект добавлять в lstTovarBindingSource. Может все таки можно как-то проще это сделать? Это сообщение отредактировал(а) St33l - 3.9.2009, 10:37 |
|||
|
||||
| HellMasterHaiL |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 181 Регистрация: 9.8.2006 Где: Россия, МО, г. Юб илейный Репутация: нет Всего: 1 |
Таксики, объект List у тебя какого типа? массив, коллекция? для чего и как используешь?
И не проще ли организовать "корзину" выбора товаров на БД? - заводишь таблицу пользователей - USER (или сессий) - таблица товара имеется - TOVAR - еще одна табличка соответствия выбранного пользователем (сессией) товара - USERTOVAR и при перехвате события выбора товара Form2 просто каждый раз перезаполнять (Fill) список выбранных товаров в датасете на основе связи трех таблиц TOVAR - USERTOVAR - USER (как-то так) |
|||
|
||||
| St33l |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 16.6.2007 Репутация: нет Всего: нет |
"объект List у тебя какого типа?" - типа Tovar;
"массив, коллекция?" - а как узнать?.. я сделал так:
вообще товар это абстрактное понятие. на самом деле там будут вещества и их химический состав. на основе выбранных веществ будут производиться различные расчёты технологических параметров. и данный лист это только начало. когда он будет заполнен пользователем, то производится расчет средневзвешенного состава, и рассчитанный состав улетит во второй лист. а во второй лист добавятся еще вещества. и снова будет расчет средневзвешенного. просто я не могу понять, как "элегантно" перенести выбранные пользователем данные в list (идет несоответствие типов datarow и Tovar). |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |