如何在内联编辑器类型子列表netsuite中添加Mark all / Unmark all按钮

时间:2016-09-18 12:15:04

标签: javascript netsuite suitescript suite

我正在尝试在子列表中添加Mark all / Unmark all按钮,这是一种内联编辑器子列表。下面我添加了一个列表类型子列表的代码,它不适用于内联编辑器子列表。任何人都可以帮忙找到这个吗?

function button1Func(type) {
if (type=='edit' || 'view')
    {
        var record =  nlapiLoadRecord(nlapiGetRecordType(), nlapiGetRecordId());
        var intCount = record.getLineItemCount('item');
        var headrow = document.getElementById("item_headerrow");
        var head = headrow.insertCell(0);
        head.innerHTML ="Select";
        for (var rep = 1; rep <= intCount; rep++)
            {
                var row = document.getElementById("item_row_"+rep);
                var x = row.insertCell(0);
                var newCheckbox = document.createElement("INPUT");
                newCheckbox.setAttribute("type", "checkbox");
                newCheckbox.setAttribute("id", "select_CheckBox"+rep);
                x.appendChild(newCheckbox);
            }
    }
 }

function button2Func(type) {
if (type=='edit' || 'view')
    {
        var record =  nlapiLoadRecord(nlapiGetRecordType(), nlapiGetRecordId());
        var intCount = record.getLineItemCount('item');
        for (var rep = 1; rep <= intCount; rep++)
            {
                var repId = record.getLineItemValue('item', 'item', rep);
                if(document.getElementById("select_CheckBox"+rep).checked==true){
                    makecopyfun(repId);
                }
                else
                {
                    continue;
                }
            }
        alert("Success");
    }
}

 function makecopyfun(repId){
   var record =  nlapiLoadRecord(nlapiGetRecordType(), nlapiGetRecordId());
  var intCount = record.getLineItemCount('item');
  record.insertLineItem('item',intCount + 1);
  alert (intCount);
  record.setCurrentLineItemValue('item','item',repId);
  record.commitLineItem('item');
  var id = nlapiSubmitRecord(record, true);
 }

3 个答案:

答案 0 :(得分:1)

由于没有记录对象,因此无法通过API确定您可以尝试使用jQuery。

答案 1 :(得分:1)

首先编写以下代码&amp;创建userEvent脚本并在beforeLoad事件中应用函数名称(initnoload)。 然后在Quote。上部署该脚本。

function initonload(type, form, request) {
if (type=='edit' || type=='view') {

    var list = form.getSubList("item");
    list.addButton('custpage_markmark','Mark all','markall();');  //markall(); is function name from the client script
    list.addButton('custpage_unmarkmark','Unmark all','unmarkall();'); //unmarkall(); is function name from client script
    form.setScript('customscript_mark_all_item_quote'); // 'customscript_mark_all_item_quote' is the ID of script

 }
}

上面的代码将向Sublist添加两个按钮,并在客户端脚本中执行它们的操作,我们已经定义了ScriptId。

现在编写以下代码&amp;创建客户端脚本。(注意:只需保存客户端脚本,不要指定任何事件函数名称,也不要部署它)。

function markall() {

    var count=nlapiGetLineItemCount('item'); //gets the count of lines
    for(var i=1;i<=count;i++) {
        nlapiSelectLineItem('item',i);
        nlapiSetCurrentLineItemValue('item','custcol_checkbox_field','T',true,true); //'custcol_checkbox_field' is checkbox's field ID.
    }
    nlapiCommitLineItem('item');
}
function unmarkall() {

    var count=nlapiGetLineItemCount('item');
    for(var i=1;i<=count;i++) {
        nlapiSelectLineItem('item',i);
        nlapiSetCurrentLineItemValue('item','custcol_checkbox_field','F',true,true); //'custcol_checkbox_field' is checkbox's field ID.
    }
    nlapiCommitLineItem('item');
}

保存客户端脚本后,请将其ID粘贴到用户事件的form.setScript('客户端脚本ID')中。功能

我希望这会帮助你。

如果你遇到任何困难,请告诉我。

谢谢。

答案 2 :(得分:0)

我想出了其他的想法,因为你可以使用这个字段来帮助你标记/取消标记子列表下的所有行。你可以在表格中添加子标签,在子标签下你可以添加字段和子列表。稍后您可以在该字段上应用脚本,这将帮助您标记/取消标记所有子列表行。

这是代码......

form.addSubTab('custpage_tab','Main Tab'); form.addField('custpage_chkmark','checkbox','Mark / Unmark All',null,'custpage_tab');             form.addSubList( 'custpage_sublst', 'inlineeditor', 'SampleSubList', 'custpage_tab');