我在自定义记录上有一个字段。该字段的名称是reference_code。
我想填充" reference_code"使用我自己的动态列表,它将作为下拉列表呈现给用户。
我该怎么做?我将我的字段定义为Free-Text。我是否需要将其隐藏起来,然后在加载表单之前将其显示为下拉列表?
我认为这可能会有所作为:
nlapiInsertSelectOption('custrecord_rulereferencecode', code, code, false)
但我需要将字段转换为选择?
答案 0 :(得分:2)
Typically, instead of creating the field as Free-Text, you would first create a Custom List (Customization > Lists/Records/Fields > Lists > New) with all of your dropdown options.
Then you would create your field as a List/Record field and select your new Custom List as the "List/Record Type", as depicted below.
答案 1 :(得分:2)
这可以通过为您的下拉菜单提供来源来完成。源字段接受列表的内部标识。此内部标识可以是内置的(由netSuite提供)或由用户创建的自定义列表。例如:我有一个内部标识为“23”的自定义列表,其中包含一些列表项,可以通过以下语法在下拉菜单中填充这些列表项。
var start = function(request, response)
{
var form = nlapiCreateForm('Custom Form');
form.addField('custpage_selectfield', 'select', 'select a color', '23');//here 23 is the internal id of my list
respnose.writePage(form);
}
或者您可以使用addSelectOption()函数动态生成自己的字段。
var start = function(request, response)
{
var form = nlapiCreateForm('Custom Form');
var myselectfield = form.addField('custpage_selectfield', 'select', 'select a color');
myselectfield.addSelectOption('1', 'Red');//Here 1, 2 and 3 are the id's
myselectfield.addSelectOption('2', 'Green');//which are returned when the
myselectfield.addSelectOption('3', 'Blue');//form is submitted
respnose.writePage(form);
}
答案 2 :(得分:0)
我通过创建两个字段来解决这个问题。一个在RecordType中创建,并将存储信息。我把它设置为隐藏。带有自定义下拉列表的下一个字段将添加到用户事件中。然后,我处理自定义动态选择列表的数据,并将其添加到我添加的用户事件字段中。
然后在我的更改事件中,我将记录类型字段设置为在动态添加的字段中选择的值。
Userevent
function userEventBeforeLoad(type, form, request){
if(type == "edit"){
form.addField('custpage_referencecode','select','Reference Code',null, null)
}
}
在我的客户端脚本中:
function clientFieldChanged(type, name, linenum){
if(name == 'custpage_referencecode'){
//obtain the upper case value
var codetext = nlapiGetFieldValue(name)
//make sure it hasn't been set
if (codetext != nlapiGetFieldValue('custrecord_rulereferencecode'))
{
nlapiSetFieldValue('custrecord_rulereferencecode', codetext );
}
}
return true
}