昨天在csdn上看到一個人提出來了一種分頁的需求,大緻是分頁控件隻負責繪制總頁數、上一頁、下一頁等資訊,然後在使用者翻頁的時候可以觸發一個js函數,然後自己實作這個js函數。并不需要送出表單,他想用ajax的方式來擷取資料,但是又不想使用微軟的ajax。
大概的需求就是這樣的(至少我的了解是這樣的),不知道吳旗娃的分頁控件是不是支援這種需求。不過我的分頁控件還沒有涉及到ajax,原因是我還不會用ajax,那麼是不是可以先實作這種需求呢?想了一下,比較簡單,隻要繼承PageUI類,寫一個UI_JS子類,在這個子類裡面override幾個函數就可以了。好先試一下。大約半個小時之後,ok。達到了自己想要的目的。
分頁控件在這種方式下負責的事情:繪制總記錄數,總頁數,第幾頁,首頁,末頁,上一頁,下一頁,還有在翻頁的時候觸發一個js函數,不會觸發表單送出。
private void SetPagerInfo()
{
//設定成自定義方式,這種方式分頁控件不擷取資料,需要自己擷取資料。
myPager.SetRunKind = JYK.Controls.Page.myPageRunKind.Customer;
//設定成js函數的分頁方式
myPager.SetUIKind = JYK.Controls.Page.myPageUIKind.JS;
//設定總記錄數,需要自己得到總記錄數。
myPager.SetPageRecordCount = 90; //假設有90條記錄
//下面的屬性就可以不用設定了。
}
設定這三個屬性就可以了。然後需要在aspx頁面裡面寫一個js函數來實作提取資料的代碼,這個就要自己實作了。
var PageIndex =0;
function jsClick(index)
{
var a = document.getElementById("f_Index");
var b = document.getElementById("f_PageCount");
//alert(a.innerText);
PageIndex = a.innerText * 1;
var PagerCounr = b.innerText * 1
//index的值:a,首頁;b,上一頁;c,下一頁;d,末頁
switch (index)
{
case "a":
alert("使用者想翻到首頁");
PageIndex = 1;
break;
case "b":
alert("使用者想翻到上一頁");
PageIndex = PageIndex -1;
case "c":
alert("使用者想翻到下一頁");
PageIndex = PageIndex +1;
case "d":
alert("使用者想翻到末頁");
PageIndex = PagerCounr;
}
if (PageIndex < 1) PageIndex =1;
if (PageIndex > PagerCounr) PageIndex = PagerCounr;
a.innerText = PageIndex; //設定翻頁後的頁數
//這裡隻是一個我的想法,如果您有更好的,那麼可以改成你的。
}
不知道這麼做是不是能能夠滿足他的需求。不過下一步我想讓分頁控件也能夠實作在ajax(準确的說是xmlHttp)下自己擷取資料。