portal sn-record-picker

Dana Israeli
Giga Guru

hey everyone,

i have a widget with sn-record-picker.

1. i want on onchange to make the field read-only. i know that : sn-disabled="true" needs to make the field readonly. but i need it only if there is a value.

2. i want to pass the selected value from my widget to catalog item.

this is my widget code:

HTML:

<div>
<sn-record-picker field="c.number"
table="'ast_contract'"
display-field="'number'"
display-fields="'number'"
value-field="'sys_id'"
search-fields="'number'"
sn-disabled="true"
page-size="100" ></sn-record-picker>
</div>

 

(function() {
var gr = new GlideRecord('ast_contract');
var sys_id = $sp.getParameter('sys_id');
gr.get(sys_id);
data.number = gr.getDisplayValue('number');
data.sys_id = gr.getDisplayValue('sys_id');

})();
 
client Controller:
function($scope, $location) {
/* widget controller */
var c = this;
$scope.contract = {
displayValue: $scope.data.number,
value: $scope.data.sys_id,
name: 'contract'
};

c.onchange = function() {
if (c.data.number) {
c.data.disable = true;
}
}


// var display_id = $location.search().sys_id;
// $scope.$on("field.change", function(evt, parms) {

// localStorage.setItem("contract3", parms.newValue);
// if (parms.field.number == 'contract')
// changePage(parms.newValue);
// });

// function changePage(p) {
// var path = $location.path();
// var searchParms = $location.search();
// $location.url(path + '?id=' + searchParms.id + '&table=ast_contract&sys_id=' + p);
// }
}

 

 

1 ACCEPTED SOLUTION

Dana Israeli
Giga Guru

i found an answer bymyself:

 

<div>
<sn-record-picker field="data.number"
table="'ast_contract'"
display-field="'number'"
display-fields="'number'"
value-field="'sys_id'"
search-fields="'number'"
page-size="100"
sn-disabled="data.disabled"
>
</sn-record-picker>
</div>

 

 

function($scope, $location) {
/* widget controller */
var c = this;
$scope.contract = {
displayValue: $scope.data.number,
value: $scope.data.sys_id,
name: 'contract'
};
$scope.$watch(function() {
$scope.$on("field.change", function(evt, parms) {
if (parms.field.name != '') {
c.data.disabled = true;


}

})
})

}

View solution in original post

4 REPLIES 4

Mike Patel
Tera Sage

try changing HTML sn-disabled="data.disabled"

 and add 

data.disabled = false;

on 1st line of server script

changed, nothing

can you do screen sharing with me?

Dana Israeli
Giga Guru

i found an answer bymyself:

 

<div>
<sn-record-picker field="data.number"
table="'ast_contract'"
display-field="'number'"
display-fields="'number'"
value-field="'sys_id'"
search-fields="'number'"
page-size="100"
sn-disabled="data.disabled"
>
</sn-record-picker>
</div>

 

 

function($scope, $location) {
/* widget controller */
var c = this;
$scope.contract = {
displayValue: $scope.data.number,
value: $scope.data.sys_id,
name: 'contract'
};
$scope.$watch(function() {
$scope.$on("field.change", function(evt, parms) {
if (parms.field.name != '') {
c.data.disabled = true;


}

})
})

}

Great!

Got busy at work so didn't got chance to reply you.