背景
當資料量大、查詢條件複雜,多樣多的時候,我們可能需要單獨做一個查詢介面,當使用者選擇設定了相關的查詢條件後,點擊【查詢】按鈕,系統就彈出一個新的頁面展示出根據條件查詢出的資料集。
然後,使用者每點【查詢】按鈕就彈出一個新的頁面展示出最新的查詢結果。
當然,在較好的使用者體驗下,我認為不管使用者點擊了多少次【查詢】按鈕,系統應該只彈出並有且只有一個頁面,這個頁面就是展示查詢結果的頁面了。並且這頁面還應該顯示在視窗的最前面,如果使用者使用索引標籤式瀏覽器就以閃爍的形式提示使用者當前的查詢結果已更新到最新。
解決方案
大家知道,在asp.net中直接設定form的action是沒有效果的,或者當產生postback的時候可能會有一些意外的事情發生。如:
<form id="form1" runat="server" action="searchresult.aspx" >
好,現在我們只能通過javascript動態設定form的action以及target屬性了,具體如下代碼:
function FormSubmit(){
var action = $('#form1').attr('action');
var target = $('#form1').attr('target');
$('#form1').attr('action','RetireeInfoSearchResult.aspx');
$('#form1').attr('target','RetireeInfoSearchResult.aspx');
var d = $('#form1').submit();
//alert(d);
$('#form1').attr('action',action);
$('#form1').attr('target',target);
return false;
}
當點擊【查詢】按鈕時,就觸發FormSubmit方法,通過FormSubmit方法先儲存form的屬性,然後再設定form的action以及target屬性,將target設定為查詢結果的頁面路徑,這樣可以儲存永遠只彈出一個頁面,而不是多個頁面。最後form表單提交後,將form的屬性還原。
保證查詢結果顯示在最前面或者提示使用者
在查詢結果頁面中,向body加入onload事件,具體如下:
<body onload="self.focus();">
這樣就可以保證,當頁面載入的時候焦點就在查詢結果頁面上。