02.12.2010, 18:53 | #1 |
Участник
|
Трансформирование textbox в picklist
Добрый день
Нужно трансформировать динамически поле textbox в picklist на форме. Использую следующий код : function TransformTextBoxToPicklist(FieldName, Options) { var fieldName = FieldName; var defaultValue = crmForm.all.item(fieldName).DataValue; var table = crmForm.all.item(fieldName + "_d"); var select = "<select req='0' id='" + fieldName + "' name='" + fieldName + "' defaultSelected='' class='selectBox' tabindex='1000' >"; var options = new Array(); options = Options; for (index in options) { select += "<option value='" + options[index] + "'"; if (options[index] == defaultValue) { select += " SELECTED"; } select += ">" + options[index] + "</option>"; } select += "</select>"; table.innerHTML = select; } Проблема в том, что после сохранения данные в базу не записываются. Подскажите, пожалуйста, в чём проблема. |
|
02.12.2010, 19:11 | #2 |
Консультант-джедай
|
Не занимайтесь фигней создайте пустой пиклист, вынесите его на форму. Скройте Ваше текстовое поле. Динамичеки заполняйте пиклист данными (http://msdn.microsoft.com/en-us/library/cc189837.aspx - метод {Field}.AddOption(Text, DataValue)). При сохранении переносите значение из пиклиста в Ваше текстовое поле.
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
02.12.2010, 20:07 | #3 |
Участник
|
Я согласен со slivka_83, что желательно пользоваться поддерживаемыми способами.(не заниматься фигнёй). Но чтобы Ваш код заработал, в принципе нужно поменять class "selectBox" на class "ms-crm-SelectBox ".
__________________
Читайте SDK!!! |
|
|
За это сообщение автора поблагодарили: a33ik (1), kabazakra (1). |
02.12.2010, 20:29 | #4 |
Чайный пьяница
|
Судя по всему исходный код взят с небезызвестного сайта Stunnware. Ну, а автор блога - Michael Hoehne, естественно "страдает фигнёй" уже который год и добился в этом недостижимых высот.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
02.12.2010, 20:34 | #5 |
Kostya Afendikov
|
Я бы посоветовал вам не заниматься фигней по другим соображениям - когда ваши пользователи начнут использоваться возможности "Расширенного поиска", то у них появится желание выбирать несколько значения из пиклиста для своей выборки. Потом объясните им, что вам лень было передалать текстовое поле в пиклист или, что еще лучше, когда много значений - сделать новую сущность и лукап
|
|
02.12.2010, 20:51 | #6 |
Участник
|
Дело в том, что преобразовывать текстовое поле в выпадающий список вынуждает задача : есть анкета, где вопросы и ответы могут изменятся, но должны хранится в одной сущности. Есть пары полей (текстовые) : вопрос - ответ. Разумеется, что попадается много закрытых вопросов, где есть варианты ответов и для них нужен пиклист. Так интервьюер открывает форму, выбирает подходящий сценарий и javascript удобства ради трансформирует некоторые поля ответов в выпадающие списки. Для каждого сценария набор таких полей разный.
|
|
02.12.2010, 20:56 | #7 |
Участник
|
Я вообще добавил событие onChange для элемента SELECT. По изменению значения value записывались в другое текстовое поле. При таком раскладе всё работало нормально. Просто хочу отделатся минимальным количеством полей, так как анкеты бывают большие. Отсюда и желание впихнуть выбранное значение опять же в родное поле.
|
|
02.12.2010, 20:59 | #8 |
Консультант-джедай
|
Цитата:
Сообщение от a33ik
Судя по всему исходный код взят с небезызвестного сайта Stunnware. Ну, а автор блога - Michael Hoehne, естественно "страдает фигнёй" уже который год и добился в этом недостижимых высот.
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
02.12.2010, 20:59 | #9 |
Чайный пьяница
|
Цитата:
Сообщение от kabazakra
Я вообще добавил событие onChange для элемента SELECT. По изменению значения value записывались в другое текстовое поле. При таком раскладе всё работало нормально. Просто хочу отделатся минимальным количеством полей, так как анкеты бывают большие. Отсюда и желание впихнуть выбранное значение опять же в родное поле.
Ну и первоисточник, в котором рассказывается про разницу между 3.0 и 4.0.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: kabazakra (1). |
02.12.2010, 21:08 | #10 |
Участник
|
Пробовал менять название класса. Всё-равно не сохраняет.
|
|
02.12.2010, 21:10 | #11 |
Чайный пьяница
|
Цитата:
По поводу 10 раз - каждый понимает в меру своих возможностей По поводу "причинно-следственных связей"... Как бы они не могут отличаться. И эту фразу я перечитал 4 раза, чтобы понять, что имеется ввиду. А по поводу "не к селу не к городу" - у вас своё мнение (что код - фигня). У меня - своё (что совсем нет и я привожу доводы почему нет). А истина (как и всегда) где-то посередине.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
02.12.2010, 21:29 | #12 |
Участник
|
Всё-таки загвоздка была именно в class='ms-crm-SelectBox'. Всё работает. Спасибо за помощь.
|
|
02.12.2010, 22:25 | #13 |
Kostya Afendikov
|
Цитата:
Сообщение от kabazakra
Дело в том, что преобразовывать текстовое поле в выпадающий список вынуждает задача : есть анкета, где вопросы и ответы могут изменятся, но должны хранится в одной сущности. Есть пары полей (текстовые) : вопрос - ответ. Разумеется, что попадается много закрытых вопросов, где есть варианты ответов и для них нужен пиклист. Так интервьюер открывает форму, выбирает подходящий сценарий и javascript удобства ради трансформирует некоторые поля ответов в выпадающие списки. Для каждого сценария набор таких полей разный.
Значит вам виднее, удачи. |
|
|
За это сообщение автора поблагодарили: a33ik (1). |
03.12.2010, 18:34 | #14 |
Участник
|
Дэк, что же вы предлагаете, выносить на форму десятки пиклистов? и десятки текстовых полей? Мне же нужно на одну и ту же сущность вынести одновременно несколько сценариев опроса и отображать их в зависимости от того, что нужно будет интервьюеру. Вопрос может быть открытым или закрытым в зависимости от сценария. Варианты опций пиклистов тоже разные для каждого сценария. Что вы предлагаете, чтобы облегчить жизнь юзерам?
|
|
03.12.2010, 22:15 | #15 |
Kostya Afendikov
|
Цитата:
Сообщение от kabazakra
Дэк, что же вы предлагаете, выносить на форму десятки пиклистов? и десятки текстовых полей? Мне же нужно на одну и ту же сущность вынести одновременно несколько сценариев опроса и отображать их в зависимости от того, что нужно будет интервьюеру. Вопрос может быть открытым или закрытым в зависимости от сценария. Варианты опций пиклистов тоже разные для каждого сценария. Что вы предлагаете, чтобы облегчить жизнь юзерам?
В вашем случае, как я понимаю, в зависимости от сценария опроса вы в одни и теже поля будете подставлять разные сгенерированные пиклисты вопросов/ответов. Что ж, вам виднее. Придется помучатся с выводом данных для отчетов н-р, конечно же если они будут нужны кому-то. |
|
Теги |
crm, dom, javascript, picklist |
|
|