1

我正在尝试在子列表中添加一个标记全部/取消标记所有按钮,这是一种内联编辑器子列表。下面我添加了一个列表类型子列表的代码,它不适用于内联编辑器子列表。谁能帮忙找到这个?

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);
 }
4

3 回答 3

1

首先编写以下代码并创建 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

 }
}

上面的代码将向子列表添加两个按钮,它们的动作在我们定义了 ScriptId 的客户端脚本中执行。

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

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('Client script ID') 中。功能

我希望这会帮助你。

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

谢谢你。

于 2016-09-21T16:09:23.657 回答
1

不确定是否通过 API,因为没有记录对象,您可以尝试使用 jQuery。

于 2016-09-19T04:02:30.303 回答
0

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

这是代码...

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

于 2016-09-20T17:40:53.697 回答