Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The NetSuite Pro

The NetSuite Pro Logo The NetSuite Pro Logo

The NetSuite Pro Navigation

  • Home
  • About Us
  • Tutorials
    • NetSuite Scripting
    • NetSuite Customization
    • NetSuite Integration
    • NetSuite Advanced PDF Templates
    • NetSuite Reporting & Analytics Guide
    • Real-World NetSuite Examples
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask A Question
  • Home
  • About Us
  • Tutorials
    • NetSuite Scripting
    • NetSuite Customization
    • NetSuite Integration
    • NetSuite Advanced PDF Templates
    • NetSuite Reporting & Analytics Guide
    • Real-World NetSuite Examples
  • Blog
  • Contact Us
Home/ Real-World NetSuite Examples/Adding a Dynamic Dashboard Link to Suitelet Lists

Adding a Dynamic Dashboard Link to Suitelet Lists

🧩 Business Use Case

You’re building a Suitelet that displays a list of transactions or customers. You want to add a dashboard icon next to each record, just like in NetSuite’s native entity lists, so users can click to jump to that record’s dashboard.

This improves usability and replicates NetSuite’s own native user experience — helpful for internal tools or role-specific summary pages.


🎯 Goal

✅ Add a clickable “View Dashboard” icon column to a custom Suitelet list.
✅ Dynamically link each row to the corresponding entity’s Dashboard using addParamToURL.
✅ Use a custom free-form transaction field with an embedded icon image.


🛠️ Setup Instructions

1. 🔧 Create a Custom Field (Transaction Body Field)

Navigate to:

Customization → Lists, Records, & Fields → Transaction Body Fields → New

Then fill out:

FieldValue
LabelDashboard
TypeFree-Form Text
Store ValueLeave unchecked
Image ID_dashboard_image

Under Validation & Defaulting tab:

  • ✅ Check Formula
  • In Default Value, paste this exact string (including quotes):
'<img src="/images/nav/ns_x.gif" height="13" width="16" border="0" title="View Dashboard" class="i_dashboard_gray">'

Click Save.


2. 🧑‍💻 Suitelet Script to Display the List with Dashboard Link

Save the below code as SuiteletDashboard.js:

/**
 * @NApiVersion 2.x
 * @NScriptType Suitelet
 * @NModuleScope SameAccount
 */
define(['N/ui/serverWidget', 'N/search'], function (serverWidget, search) {

  function demoList(context) {
    var list = serverWidget.createList({ title: 'Customer Estimates with Dashboard Link' });

    // Add the Dashboard Icon Column
    var dashboardCol = list.addColumn({
      id: 'custbody_dashboard_image',
      label: 'Dashboard',
      type: serverWidget.FieldType.TEXT,
      align: serverWidget.LayoutJustification.LEFT
    });

    dashboardCol.setURL({
      url: 'https://system.netsuite.com/app/center/card.nl?sc=-69'
    });

    dashboardCol.addParamToURL({
      param: 'entityid',
      value: 'entity',
      dynamic: true
    });

    // Other Columns
    list.addColumn({ id: 'trandate', label: 'Date', type: serverWidget.FieldType.DATE });
    list.addColumn({ id: 'name_display', label: 'Customer', type: serverWidget.FieldType.TEXT });
    list.addColumn({ id: 'salesrep_display', label: 'Sales Rep', type: serverWidget.FieldType.TEXT });
    list.addColumn({ id: 'amount', label: 'Amount', type: serverWidget.FieldType.CURRENCY });

    // Pull Estimates
    var estSearch = search.create({
      type: search.Type.ESTIMATE,
      filters: [['mainline', 'is', 'T']],
      columns: ['trandate', 'entity', 'name', 'salesrep', 'amount', 'custbody_dashboard_image']
    });

    var results = estSearch.run().getRange({ start: 0, end: 1000 });

    list.addRows({ rows: results });

    context.response.writePage({ pageObject: list });
  }

  return { onRequest: demoList };
});

3. 🚀 Deploy the Script

Customization → Scripting → Scripts → New

  • Upload the file
  • Click Create Script Record
  • Name: View Dashboard Suitelet

Under Deployments tab:

  • Title: View Dashboard Suitelet
  • Status: Released

Click Save.


🧪 Sample Output

When you run the Suitelet, each row will show a little gray dashboard icon (📊). When clicked, it takes you to the Dashboard of the customer associated with that row — just like native NetSuite behavior.


🧹 Troubleshooting Tips

🔴 Error Message✅ Fix
“Your formula has an error…”Make sure your Default Value is wrapped in single quotes (`’…’)
Icon doesn’t showConfirm Image ID is exactly _dashboard_image
URL links all go to same dashboardCheck that addParamToURL uses dynamic: true and correct value: 'entity'

🧠 Summary

This real-world enhancement brings a powerful NetSuite-native user experience into your custom Suitelets. With just a few lines of code and a smart custom field setup, you can embed dynamic entity dashboard links into any list — perfect for executive dashboards, sales portals, and role-specific reports.

Share
  • Facebook

Leave a ReplyCancel reply

Sidebar

Ask A Question

Stats

  • Questions 6
  • Answers 6
  • Best Answers 0
  • Users 3
  • Popular
  • Answers
  • Rocky

    Issue in running a client script in NetSuite SuiteScript 2.0 ...

    • 1 Answer
  • admin

    How can I send an email with an attachment in ...

    • 1 Answer
  • admin

    How do I avoid SSS_USAGE_LIMIT_EXCEEDED in a Map/Reduce script?

    • 1 Answer
  • admin
    admin added an answer The issue is usually caused by following Wrong script file… September 14, 2025 at 10:33 pm
  • admin
    admin added an answer Steps to send an Invoice PDF by email: define(['N/email', 'N/render',… August 28, 2025 at 3:05 am
  • admin
    admin added an answer This error means your script hit NetSuite’s governance usage limit… August 28, 2025 at 3:02 am

Top Members

Rocky

Rocky

  • 1 Question
  • 22 Points
Begginer
Sophie1022

Sophie1022

  • 0 Questions
  • 20 Points
Begginer
admin

admin

  • 5 Questions
  • 2 Points

Trending Tags

clientscript netsuite scripting suitescript

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help

Footer

Menu

  • Home
  • About Us
  • Tutorials
    • NetSuite Scripting
    • NetSuite Customization
    • NetSuite Integration
    • NetSuite Advanced PDF Templates
    • NetSuite Reporting & Analytics Guide
    • Real-World NetSuite Examples
  • Blog
  • Contact Us

Quick Links

  • NetSuite Scripting
  • NetSuite Customization
  • NetSuite Advanced PDF Template
  • NetSuite Integration
  • NetSuite Reporting & Analytics

Subscribe for NetSuite Insights....

© 2025 The NetSuite Pro. All Rights Reserved