有没有办法在没有登录Netsuite的情况下设置可用的Suitelet表单?

时间:2015-12-22 06:54:19

标签: netsuite

我们使用suitlet创建的默认表单是丑陋的,我想要设置它的样式,但我找不到任何方式来设置其默认样式表的样式。我使用内联html来做这个,但它闪烁。我们可以使用内联html创建一个完整的表单,而不使用默认值吗?

2 个答案:

答案 0 :(得分:3)

正如prasun所说,您可以从Suitelet返回任何原始HTML,包括您自己的完整CSS。我们通常通过将我们的HTML和CSS文件放在文件柜中并在我们想要动态信息的地方放置特殊标签来处理这个问题。然后,Suitelet只需加载这些文件,相应地替换标记,然后返回完整的HTML。简单示例可能如下所示:

文件柜/ SuiteScripts / my-project / myHtml.html:

<!DOCTYPE html>
<html>
    <head>
        <title>My Suitelet Report</title>
        <!-- This tag will be replaced with the CSS file; unfortunately, NetSuite does
             not apply the styles if they are included with a link tag -->
        <style>NL_CSS</style>
    </head>
    <body>
        <p id="data-desc"><span id="data-month">NL_MONTH</span> <span id="data-year">NL_YEAR</span></p>
    </body>
</html>

文件柜/ SuiteScripts / my-project / myStyles.css:

body {
  font-size: 1em;
  font-family: "Lucida Grande", Verdana, Arial, sans-serif;
  margin: 1em 1.5em;
}

p#data-desc {
    font-size: 0.85em;
    font-weight: bold;
    margin: 1em 0;
}

文件柜/ SuiteScripts / my-project / mySuitelet.js:

function onRequest(request, response) {
    // Load the HTML content
    var html = nlapiLoadFile('SuiteScripts/my-project/myHtml.html').getValue();

    // Current date
    var now = moment();

    // Replace the month and year tags with real values
    html = html.replace(/NL_MONTH/, moment.months()[now.month()]);
    html = html.replace(/NL_YEAR/, now.year());

    // Load the CSS file to obtain its URL
    file = nlapiLoadFile('SuiteScripts/my-project/myStyles.css');

    // Replace the NL tag with the CSS contents
    html = html.replace(/NL_CSS/, file.getValue());

    response.write(html);
}

答案 1 :(得分:1)

如果你试图破解nlobjform的NetSuite样式表,那可能并不理想,因为NetSuite可以在任何时间点改变它,因为它可能依赖于NetSuite的默认DOM。

如果您想要自己的完整样式,可以在内联html中嵌入iframe,然后使用您自己的样式表完全设置页面样式。

如果您不想显示NetSuite标题和菜单选项,那么我建议您在response对象中返回完整的HTML和样式表标记。

response.setContentType('HTMLDOC');
response.write(HTML_AS_STRING);