|
06.04.2011, 19:15 | #1 |
Участник
|
Работа с tabpage и созданием новой записи
Здраствуйте, возникла проблема, есть простенькая форма с шапкой и строками. В строках есть 2 табпэйджа, под строками лежит 1 таблица, в каждом tabpage лежит по grid-у, и в каждом оторбажается по 2 поля одной записи. Как сделать так чтобы при нажатии СОЗДАТЬ НОВУЮ ЗАПИСЬ запись создавалась только в 1 гриде, а если надо то заходим во второй tabpage и нажимаем СОЗДАТЬ НОВУЮ ЗАПИСЬ и можем заполнить остальные 2 поля этой записи. Вроде так.
|
|
06.04.2011, 19:20 | #2 |
Участник
|
Вроде все должно одной строкой в initValue - DataSource проделываться
|
|
06.04.2011, 22:04 | #3 |
Участник
|
Помогите пожалуйста кто как может :-)
|
|
06.04.2011, 22:18 | #4 |
Гость
|
А не поделитесь сокровенным знанием в чем цель подобных манипуляций и изврата?
Просто если есть желание открывать для редактирования некие поля то городить подобное безнравственно так идет в разрез с общепринятыми способами решений подобных задач. |
|
06.04.2011, 22:23 | #5 |
Участник
|
Я делаю это по заданию))) Мне и самому не понятно зачем так извращаться. Но сделать надо именно так. Пока что нашел такой вариант - скопировать таблицу еще раз в datasource т.е. для каждого грида у нас свой datasource которые в итоге ссылаются на одну и ту же запись в реальной таблице. Проблема в отображении, т.е. когда смотрю все записи в tabpage-ах, в одном вижу например 2 пустых поля 3 заполненых, в другом вижу 2 заполенных - 3 пустых. Вопрос как это убрать?
|
|
06.04.2011, 22:25 | #6 |
Участник
|
Если вас не затруднит можете рассказать этот общепринятый способ решения задач??)))))
|
|
06.04.2011, 22:30 | #7 |
Гость
|
Сочувствую.
Цитата:
Сообщение от GOL
Мне и самому не понятно зачем так извращаться. Но сделать надо именно так. Пока что нашел такой вариант - скопировать таблицу еще раз в datasource т.е. для каждого грида у нас свой datasource которые в итоге ссылаются на одну и ту же запись в реальной таблице. Проблема в отображении, т.е. когда смотрю все записи в tabpage-ах, в одном вижу например 2 пустых поля 3 заполненых, в другом вижу 2 заполенных - 3 пустых. Вопрос как это убрать?
|
|
07.04.2011, 08:17 | #8 |
Участник
|
Цитата:
Сообщение от GOL
Я делаю это по заданию))) Мне и самому не понятно зачем так извращаться. Но сделать надо именно так. Пока что нашел такой вариант - скопировать таблицу еще раз в datasource т.е. для каждого грида у нас свой datasource которые в итоге ссылаются на одну и ту же запись в реальной таблице. Проблема в отображении, т.е. когда смотрю все записи в tabpage-ах, в одном вижу например 2 пустых поля 3 заполненых, в другом вижу 2 заполенных - 3 пустых. Вопрос как это убрать?
Цитата:
Сообщение от GOL
Как сказал постановщик задачи, у тебя все правильно, теперь initValue DataSource надо 1 -2 строки дописать)))) Дополнение к пред. сообщению: не как это убрать, а как сделать так что бы в левом гриде отображались только 3 заполенные строки, а в правом соответсвенно 2 зап. строки)))) Вот
|
|
07.04.2011, 08:37 | #9 |
Участник
|
Ещё предположение. У вас обе вкладки должны содержать одинаковый по составу набор столбцов (с такими же типами и с такими же наименованиями)? Если так, то задача проясняется. Таблица строк у вас должна содержать один набор столбцов (в вашем случае это только два поля, а не четыре по два на каждую вкладку, как все подумали прочитав ваш вопрос). Одну и туже пару столбцов вы будете отображать как на первой вкладке так и на второй. Ещё в таблице нужно завести признак "тип строки" или "номер вкладки" или как хотите его называйте (обычно для таких целей используют перечисляемый тип - enum). После этого при помощи фильтров добиваетесь того, чтобы на каждой вкладке отображался только нужный тип строк. Готово. Если фильтры заданы правильно, то при добавлении очередной строки система сама заполнит признак "тип строки" в зависимости от того через грид с каким фильтром вы её вставляете (initValue трогать не нужно).
|
|
07.04.2011, 08:40 | #10 |
Участник
|
Я вот такой постановки вообще не понимаю. Сделали три строки на первом гриде и заполнили поля, идем на второй грид и хотим заполнить поля для второй строки - как это сделать? Т.е. даже если и реализуете отображение как хочет постановщик, то как будете делать выбор строки во втором гриде?
Поддерживаю коллег - так не делается в AX (да и вообще в нормальных системах). Об этом надо явно сказать постановщику.
__________________
Ivanhoe as is.. |
|
07.04.2011, 09:25 | #11 |
Участник
|
Если моя догадка верна, то всё становиться на свои места. Авор просто коряво сформулировал задачу. Как я вижу, на самом деле по структуре таблица строк похожа на InventTableModule, где одни и теже поля используются для хранения настроек разных модулей. А у GOL строки разного типа но с одними и теми же полями. GOL, я прав?
|
|
07.04.2011, 09:34 | #12 |
северный Будда
|
И я не понимаю. А вы можете, хотя бы на качественном уровне, описать бизнес-задачу? Без этого все в один голос будут вам рекомендовать убить ап стену постановщика и потребовать изменения ТЗ.
__________________
С уважением, Вячеслав |
|
07.04.2011, 10:41 | #13 |
Участник
|
Здраствуйте еще раз! Вообщем уточнил условия задачи. Таблица точно должна быть одна, это та которая под разными tabpage, в разных вкладках должны отображаться разные столбцы одной записи, т.е. их может быть и 5 и 10 и сколько угодно. Только должны отображаться они без пропусков т.е. у нас есть 3 строки, в одной заполнены первые 2 колонки, а в остальных две последние колонки. все эти 3 записи однозначно соответсвуют записи из шапки. Когда смотрим в 1 tabpage видим 1 строку из 2 полей заполненую, а во 2 tabpage только 2 строки, без пустых строк! Всем спасибо за внимание!
|
|
07.04.2011, 10:59 | #14 |
Участник
|
Это не обсуждается? Вы решаете выдуманную тестовую задачу? Или в этом есть какой-то смысл? Я же правильно вас понял, что каждая строчка должна отображаться только на одной из вкладок и никогда на обеих сразу. Так, как если бы это были бы две разные таблицы?
Цитата:
Как бы я решал подобную задачу? Я уже писал что в таких случаях обычно в таблице строк делают поле - тип строки, которое определяет на какой из вкладок должна отображаться эта конкретная строчка. Последний раз редактировалось S.Kuskov; 07.04.2011 в 11:04. |
|
|
За это сообщение автора поблагодарили: GOL (1). |
07.04.2011, 11:07 | #15 |
Участник
|
Да, видимо задача тестовая. Её надо решать именно таким образом. Фильтровать надо пустые строки? т.е. если какие то 2 поля строки пустые то не отображать их? Как примерно выглядит такой фильтр, и мне кажется что это надо сделать в init методе DS?
|
|
07.04.2011, 11:22 | #16 |
Участник
|
Я бы не закладывался на значение самих полей. Вы же сами сказали что их может быть и 5 и 10. Повторюсь ещё раз. Я советую вам в таблицу строк добавить поле "тип строки" и использовать его для фильтрации.
Примерно так: X++: qbds.addrange(fieldnum(MyTableLine, LineType)).value("1"); Да to Ivanhoe: Цитата:
|
|
07.04.2011, 11:34 | #17 |
Участник
|
Точнее фильтр нужно на inite формы!?
|
|
07.04.2011, 11:46 | #18 |
Участник
|
Цитата:
Там конечно тоже можно, но обычно принято в init датасорса. |
|
07.04.2011, 13:26 | #19 |
Участник
|
Цитата:
каждом tabpage лежит по grid-у, и в каждом оторбажается по 2 поля одной записи.
Цитата:
Дополнение к пред. сообщению: не как это убрать, а как сделать так что бы в левом гриде отображались только 3 заполенные строки, а в правом соответсвенно 2 зап. строки)))) Вот
Цитата:
Сообщение от GOL
Как сделать так чтобы при нажатии СОЗДАТЬ НОВУЮ ЗАПИСЬ запись создавалась только в 1 гриде, а если надо то заходим во второй tabpage и нажимаем СОЗДАТЬ НОВУЮ ЗАПИСЬ и можем заполнить остальные 2 поля этой записи. P.S. про само тестовое задание и Цитата:
опыт работы с аксаптой только 1 месяц, и некоторые алгоритмы ее функционирования не совсем понятны
__________________
Ivanhoe as is.. |
|
07.04.2011, 11:12 | #20 |
Участник
|
Ответьте, все-таки на вопрос: как заполняются поля на разных вкладках? Или в форме только отображение, а заполнение полей происходит в другом месте?
__________________
Ivanhoe as is.. |
|