大家好,我正在尝试在Microsoft Dynamics 4.0中创建一个多选复选框选择列表。我能够使用来自link text的Jim Wangs代码创建复选框 我按照指示操作,我只是不确定是否需要将我的选项列表中的值放在此脚本中,如果是这样,我不知道在哪里。我是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 =“none”; VAR addDiv = document.createElement(“”);
PL.parentNode.appendChild(addDiv);
for(var i = 1; i< PL.options.length; i ++){var pOption = PL.options [I]; if(!IsChecked( pOption.text))
var addInput = document.createElement(“”);
var addLabel = document.createElement(“”);addLabel.innerText = pOption.text; var addBr = document.createElement(
“BR”); PL.nextSibling.appendChild(addInput); PL.nextSibling.appendChild(addLabel); PL.nextSibling.appendChild(addBr);
函数IsChecked(pText)
{
if(PLV.value!=“”){
var PLVT = PLV.value.split(“||”);
for(var i = 1; i< PLVT.length; i ++)
{
if(PLVT [i] == pText)
返回true;
}
}
返回false; crmForm.attachEvent(“onsave”);
function OnSave(){PLV.value =“br”; var getInput = PL.nextSibling.getElementsByTagName(“input”); for(var i = 1; i< getInput.length; 我++){
if(getInput [i] .checked)
{
PLV.value + = getInput [i] .nextSibling.innerText + “||”;
}}
答案 0 :(得分:0)
我看过你提到的代码。我不喜欢为这样的东西创建两个字段的想法。我想出了以下代码,它运行得很好。我们使用以下代码
通过我们所有crm 4.0页面上的通用js文件加载这个小帮助函数以下代码没有直接关系。进一步了解辅助函数和示例用法行。
// 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()
代码在它的方法上是完全不同的。基本上我们有一个文本字段,在代码中我们实现了各种选项。最后,我们不再使用这种方法,而不是因为它不起作用,而是我们想要展示的其他事情的复杂性。相反,我们创建了一个嵌入在iframe中的html页面,该页面基本上将信息推回到文本字段中。总体最终目标是实体驱动调度程序服务。
因为代码保留在我们的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");
答案 1 :(得分:0)
只是为了补充我的另一篇文章(并不是说上面的内容并不过于全面)。您应该知道,您发布的代码会将其信息存储在文本字段而不是选择列表中。从技术上讲,将其存储在选择列表中是不可能的,因为数据库根本无法在选择列表字段类型中保存多个值。代码仅使用选择列表来获取它转换的值并将其呈现为复选框,但将选项拖放到文本字段中。
如果您需要/想要,您也可以使用html标签在这里创建自己的风格。
看到你的一些其他帖子,并认为这可能是关于代码如何工作的错误概念。