logo

NJP

Service Portal Pagination Widget using chooseWindow method

Import · Jan 01, 2018 · article

Hello All,

This post covers the simpler way to show records stored in ServiceNow database table in paginated way on Service Portal Widget.

It leverages the OOB "chooseWindow" GlideRecord - Scoped method of GlideRecord API.

HTML Template Code :

Number Short Description
{{c.data.records\[$index\].number}} {{c.data.records\[$index\].short\_description}}
Previous Next

<

                                                               
              Number                         Short Description          
{{c.data.records[$index].number}}{{c.data.records[$index].short_description}}
        Previous           Next  

CSS for table formatting:

table {

font-family: arial, sans-serif;

border-collapse: collapse;

width: 100%;

}

td, th {

border: 1px solid #dddddd;

text-align: left;

padding: 8px;

}

tr:nth-child(even) {

background-color: #dddddd;

}

Client Controller :

function($scope) {

  /* widget controller */

  var c = this;

$scope.getNextSet = function() {

c.data.current_page = parseInt(c.data.current_page) + 1;

c.data.action = "nextRecord"

c.server.update().then(function(r){

c.data.action = undefined;

console.log("Response " + JSON.stringify(r));

console.log("Data objet " + JSON.stringify(c.data));

//c.data.records = r.records;

});

}

$scope.getPrevious = function() {

c.data.current_page = parseInt(c.data.current_page) - 1;

c.data.action = "nextRecord"

c.server.update().then(function(r){

c.data.action = undefined;

console.log("Response " + JSON.stringify(r));

console.log("Data objet " + JSON.stringify(c.data));

//c.data.records = r.records;

});

}

}

Server Script :

(function() {

  /* populate the 'data' object */

  /* e.g., data.table = $sp.getValue('table'); */

if (!input) {

data.records = [];

data.page_size = 5;

data.count = 5;

data.current_page = 0;

var gr = new GlideRecord("incident");

gr.orderBy("number");

gr.chooseWindow(data.current_page, data.page_size);

gr.query();

while (gr.next()) {

var obj = {};

//gs.addInfoMessage("Hello");

obj.number = gr.getValue("number");

obj.short_description = gr.getValue("short_description");

data.records.push(obj);

}

}

if (input && input.action == "nextRecord") {

data.records = [];

data.count = 0;

var startPage = input.current_page * input.page_size;

var endPage = (input.current_page * input.page_size) + input.page_size

// gs.addInfoMessage("start " + startPage + " endPage " + endPage);

var gr1 = new GlideRecord("incident");

gr1.orderBy("number");

gr1.chooseWindow(startPage, endPage);

gr1.query();

while (gr1.next()) {

data.count++

var obj1 = {};

//gs.addInfoMessage("Hello");

obj1.number = gr1.getValue("number");

obj1.short_description = gr1.getValue("short_description");

data.records.push(obj1);

}

return data;

}

})();

Some screen captures

image

image

image

View original source

https://www.servicenow.com/community/in-other-news/service-portal-pagination-widget-using-choosewindow-method/ba-p/2287058