想實現如下功能
一開啟將所有記錄列出,然後點查詢
輸入查詢條件後,上一頁自動返回查詢的條數。
此功能在asp中實現很好實現。但在..net中開發還是第一次。
開發過程
1、 首先我按asp中的寫法,首頁上接受新頁返回得值,具體函數
function opennewwindow()
{
var returnvalue=window.showModalDialog("query.aspx");
if (returnvalue)
{ Form1.HidId.value=returnvalue.split("$")[0];
Form1.HidName.value=returnvalue.split("$")[1]; Form1.HidAuthor.value=returnvalue.split("$")[2];
Form1.HidSort.value=returnvalue.split("$")[3];
Form1.HidPublish.value=returnvalue.split("$")[4];
}
}
卻發現雖然返回了值,但是字碼頁的sql語句卻沒有執行。也就是說字碼頁沒有執行。這與asp的過程執行是不一樣。
1、 此時我明白必須要在此客戶段的javascript函數中執行一下伺服器端的代碼檔案(.cs檔案),如何執行呢?這裡就涉及到客戶段代碼如何調用伺服器端代碼的問題了?上網查資料,有這樣的寫法:
卻發現雖然返回了值,但是字碼頁的sql語句卻沒有執行。也就是說字碼頁沒有執行。這與asp的過程執行是不一樣。
<script>
function test()
{
if (真的話)
document.all["btn_test"].click();
}
</script>
<input type="button" onclick="test();">
<asp:button id="btn_test" runat="server"></asp:button>
這樣客戶段當附值完畢之後就能執行伺服器端控制項的click事件了,所以可以拖上一個button 或者別的控制項,然後對他觸發一個時間就可以了,可是如果讓他在介面上直接顯示不美觀,所以把他的visible設為false,運行,卻發現不行了,因為如果把一個控制項的visble設定為false的話,他到了客戶段卻沒有了。所以如果拖顯示控制項是不行的,那托上一個hidden ,發現hidden不好用。
這個時候想到了Form1.submit();,用它提交一下不就行了嗎。
這些應該可以了,運行。傳回值好像提交了,但是沒有出現正確的結果,這是為什麼呢?奧。看一下Page_Load 發現加上了if (!Page.IsPostBack),對問題就在這裡。不應該加這個。因為每次提交一次,都要重新載入一次,所以去掉就ok了。
至此問題解決。