如何为netsuite字段创建自定义选择列表?

时间:2015-05-12 20:41:52

标签: netsuite

我在自定义记录上有一个字段。该字段的名称是reference_code。

我想填充" reference_code"使用我自己的动态列表,它将作为下拉列表呈现给用户。

我该怎么做?我将我的字段定义为Free-Text。我是否需要将其隐藏起来,然后在加载表单之前将其显示为下拉列表?

我认为这可能会有所作为:

nlapiInsertSelectOption('custrecord_rulereferencecode', code, code, false)

但我需要将字段转换为选择?

3 个答案:

答案 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.

enter image description here

答案 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); }

Here's the 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); }

Here's the 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

}