リスト画面に遷移した際、デフォルトでレコードを1件選択している状態にしたい
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-06-2022 10:03 PM
コミュニティの皆様
いつもお世話になっております。
リスト画面に遷移した以下のようにレコードが1件デフォルトで選択されている状態にしたいです。
→こちらのリスト画面には、別のリスト画面から遷移できるようにしております。
(リスト画面にUI Actionを作成)
→UI Actionなので、漠然とg_listで何かできないか模索していますが、
何か上記を達成できるメソッドがあれば、教えて頂きたいです。
よろしくお願いいたします。
UI Actionのスクリプト
function resultRequestTaskFacility() {
var the_list = GlideList2.get('u_facility_hyouji_for_request_task_result');//Database viewからの遷移になります
var action_id = '50794ba71baa11100fe88665cc4bcbc5';
var selected = g_list.getChecked();
var sysId;
if (selected != '') {
selected = g_list.getChecked();
var sysIdList = selected.split(',');
if (sysIdList.length > 1) {
alert("1レコードのみ選択してください。");
} else {
var facility = new GlideRecord('alm_facility');
facility.addQuery('sys_id', selected);
facility.query();
while (facility.next()) {
var gr = new GlideRecord('u_temp');
gr.initialize();
gr.setValue('u_sys_id', facility.sys_id);
gr.setValue('u_item', 'result_request_task_facility');
gr.insert();
}
the_list.action(action_id, 'result_request_task_facility', selected);
}
} else {
alert("レコードが選択されていません。");
}
}
if (typeof window == 'undefined') {
submit();
}
function submit() {
var temp = new GlideRecord('u_temp');//一時的な情報を保持する用のテーブルを作成しました
temp.orderByDesc('sys_created_on');
temp.addQuery('u_item', 'result_request_task_facility');
temp.addQuery('sys_created_by', gs.getUserName());
temp.setLimit(1);
temp.query();
while (temp.next()) {
sysId = temp.getValue('u_sys_id');
}
var url = '';//スクリーンショットのリスト画面のURL
action.setRedirectURL(url);
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-08-2022 08:35 PM
選択する処理として該当するのが
GlideList2.get(input.getAttribute('data-list_id')).rowChecked(input, e);
このような記述になりますが、rowCheckedにはElementやEventを渡すこと、この処理単体では終わらずElementのStyle変更は別処理で行っていたりします。この状況から推測すると一般の利用想定はなさそうです。
そこで、単純に、Checkboxをクリックする処理を実装するのはどうでしょうか。
GlideList2.get('u_facility_hyouji_for_request_task_result').table.querySelector('tr.list_row input').click()
『リスト画面に遷移した以下のようにレコードが1件デフォルトで選択されている状態』
この場合はClientScriptとして、下記のように記述すると、表示直後にCheckboxをクリックします。
function myCheck(){
var click = false;
if(typeof GlideList2 != 'undefined'){
var gl = GlideList2.get('u_facility_hyouji_for_request_task_result');
if(gl){
gl.table.querySelector('tr.list_row input').click();
click = true;
}
}
if(!click){
setTimeout(myCheck,100);
}
}
setTimeout(myCheck,100);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-11-2022 12:59 AM
iwaiさん、ご回答ありがとうございます。
上記について、一旦は保留となっているため、
時間が空いた時にご確認させて頂きます。
コーディングはServiceNowから経験しているので、
javascriptの既存メソッドがあまりわからず、
gl.table.querySelector('tr.list_row input').click();
この処理があまり理解できませんでした。
こちらの処理は具体的にどのような処理になるのでしょうか。
お手数をおかけしますが、よろしくお願いいたします。
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
11-11-2022 01:35 AM
gl.table には、 ListViewのHTML Table Element (ListViewの要素)が格納されています。
querySelectorによって、最初のチェックボックスを検索して、見つかったElement(チェックボックスの要素)を取得。
そのElementをマウスクリック(クリックと同じ処理)しています。