Сохранение списка выбора нескольких флажков в MS CRM ... ПОЖАЛУЙСТА, ПОМОГИТЕ - PullRequest
0 голосов
/ 06 января 2011

Привет всем, я пытаюсь создать список выбора нескольких флажков в Microsoft Dynamics 4.0. Мне удалось создать флажок, используя код Джима Вангса из текст ссылки Я следовал инструкциям, я просто не уверен, нужно ли мне помещать значения, которые есть в моем списке выбора, в этот скрипт, и если да, я не знаю, где. Я новичок в Java Script, поэтому я не был уверен, какие поля нужно изменить (или какие цвета означают что). Также, когда я вставляю сценарий и вставляю в свои имена PL и PLV; Я могу видеть флажок на экране моего аккаунта и значения, но когда я нажимаю сохранить и закрыть, он не будет сохранен. Вот ссылка на картинку в качестве примера того, как она выглядит в ссылке выше. В моем списке выбора значения, которые у меня есть (Value, Value1, Value2), сделали это, потому что это был тест для меня, чтобы выяснить, куда все пошло и нужно ли значения в сценарии. Как вы можете видеть из кода, который я не поместил в список выбора, это может быть причиной ошибки сохранения; Я просто понятия не имею, что изменить и куда его вставить. Мне не повезло, что кто-то помог мне с этим. Так что любая помощь будет принята с благодарностью. Пожалуйста, помогите,

Алмазные

var PL = crmForm.all.new_picklist;
var PLV = crmForm.all.new_picklistvalue;
PL.style.display = "none";
PLV.style.display = "нет"; вар addDiv = document.createElement ("");
PL.parentNode.appendChild (addDiv);
для (var i = 1; i var addInput = document.createElement ("");
var addLabel = document.createElement ("");

addLabel.innerText = pOption.text;      var addBr = document.createElement(

"ш"); PL.nextSibling.appendChild (addInput); PL.nextSibling.appendChild (addLabel); PL.nextSibling.appendChild (addBr);
} функция IsChecked (pText)
{
if (PLV.value! = "") {
var PLVT = PLV.value.split ("||");
для (var i = 1; i {
if (PLVT [i] == pText)
верните истину;
}
}
вернуть ложь; } crmForm.attachEvent ("onsave");
function OnSave () {PLV.value = "br"; var getInput = PL.nextSibling.getElementsByTagName ("input"); for (var i = 1; i if (getInput [i] .checked)
{
PLV.value + = getInput [i] .nextSibling.innerText + "||";
}}

Ответы [ 2 ]

0 голосов
/ 07 января 2011

Просто для дополнения моего другого поста (не предполагая, что вышеизложенное не было слишком всеобъемлющим для начала). Вы должны знать, что код , который вы разместили , хранит информацию в текстовом поле , а не в списке выбора . Технически невозможно сохранить его в списке выбора, поскольку база данных просто не может содержать несколько значений в типе поля списка выбора. Код просто использует список выбора, чтобы получить значения, которые он переводит и отображает как флажки, но опускает опции в текстовое поле.

Вы также можете поиграть с HTML-тегами, чтобы создать свой собственный стиль здесь, если вам нужно / хотите.

Видел некоторые другие ваши посты и думал, что, возможно, это было неправильное представление о том, как работает код.

0 голосов
/ 07 января 2011

Я видел код, на который вы ссылаетесь. Мне не понравилась идея создания двух полей для чего-то подобного. Я придумал следующий код, который работает довольно хорошо. Мы загружаем эту маленькую вспомогательную функцию через общий js-файл на всех наших страницах crm 4.0, используя следующий код

Следующий код не имеет прямого отношения. Посмотрите дальше на вспомогательную функцию и пример использования строк.

// Get Generic Scripts from server
try{
    var headID = document.getElementsByTagName("head")[0];
    var GenericHelpers = document.createElement('script');
    GenericHelpers.type = 'text/javascript';
    GenericHelpers.src = '/ISV/GenericScripts/Generics.js';
    GenericHelpers.onload = scriptLoaded;
    GenericHelpers.onreadystatechange = function(){if (GenericHelpers.readyState == 'loaded' || GenericHelpers.readyState == 'complete'){scriptLoaded();}};
    headID.appendChild(GenericHelpers);
}
catch(err){
    alert('Failed to attach specific scripts to this form. Please contact IT Support.\n\n Specific Error: ' + err.description);
}

function scriptLoaded(){
    try{
        //all other code...
    }
    catch(err){
        alert('Form load events failed. Functionality of the form may limited or non-functional. Please contact IT Support.\n\n Specific Error: ' + err.description);
    }
}//scriptLoaded()

Код совсем другой по своему подходу. В основном у нас есть текстовое поле и в коде мы реализуем различные опции. В итоге мы отказались от использования этого подхода все вместе не потому, что он не работал, а из-за сложности других вещей, которые мы хотели показать. Вместо этого мы создали html-страницу, встроенную в iframe, и страница в основном перенесла информацию обратно в текстовые поля. Общая конечная цель состояла в том, чтобы организация управляла службой планировщика.

Поскольку код остался в нашем файле generics.js, я предполагаю, что он работает, но не могу сказать, что проверил его и не трогал его с момента его написания. Рад вернуться к этому, хотя просто напишите мне.

Вспомогательная функция

function mvHelper(oElement){

var divTag = document.createElement("<div id='list_" + oElement.id + "' style='overflow-y:auto; border:1px #6699cc solid; background-color:transparent;' />");

this.mvField = oElement;
this.mvField.style.display = "none";
this.mvField.parentNode.appendChild(divTag);

this.addTickBox = function(str){
    var addInput = null;

    if(oElement.value.indexOf(str)>=0){
        addInput = document.createElement("<input checked='true' type='checkbox' title='" + str + "' style='border:none; width:25px; align:left;' />");
    }
    else{
        addInput = document.createElement("<input type='checkbox' title='" + str + "' style='border:none; width:25px; align:left;' />");
    }

    var addLabel = document.createElement("<label style='width:65px; align:left;' />");

    addLabel.innerText = str;

    addInput.onclick = function(){
        if(this.checked){
            oElement.value += str + ',';
        }
        else{
            oElement.value = oElement.value.replace(str + ',','');
        }
    }
    divTag.appendChild(addInput);
    divTag.appendChild(addLabel);
}//mvHelper(oElement)

Пример использования

// crmForm.all.new_daysofweek is a text field in crm itself. 
var daysOfWeek = new mvHelper(crmForm.all.new_daysofweek);
dayOfWeek.addTickBox("Mon");
dayOfWeek.addTickBox("Tue");
dayOfWeek.addTickBox("Wed");
dayOfWeek.addTickBox("Thu");
dayOfWeek.addTickBox("Fri");
dayOfWeek.addTickBox("Sat");
dayOfWeek.addTickBox("Sun");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...