接上回書說,我們實現了基本的顯示和排序.那麼今天就來做做查詢和分頁.
首先先做通過傳遞普通參數的形式來實現條件查詢的.這裡僅僅做個示範.
我們要通條件查詢那就需要修改我們原來的查詢方法了.
[DataObjectMethod(DataObjectMethodType.Select)] public static List<UserInfo> GetUserInfoList(string name, string sort) { ........ }
我們這裡加了一個參數用來傳入要查詢的使用者名稱稱.
但是這裡一定要注意.當你修改了後面的方法後一定要做一件事情.
那就是配置資料來源
因為我們修改後面的方法參數所以這裡也變化了如果不重新設定資料來源就會報一個錯誤那就是
當你重新設定資料來源的時候就可以給你的參數設定值的來源了
這裡我給name參數設定了值的來源為控制項類型.控制項名為txt_name,這樣你就可以通過傳遞的值來改變你返回集合的內容了.而且這裡因為我們指定資料來源是txt_name所以當你點擊查詢按鈕的時候,他會自動重新綁定GridView控制項.也就是你不必再執行GridView的DataBind方法了
上面已經實現了一點點效果了那最後就實現我們這次要最終想要的結果吧.
在傳遞值的時候會發現如果傳遞多個查詢條件的時候參數還是比較多的.而且我們本來是有那個UserInfo類的,那我們乾脆把要查詢的條件內容放到一個對象裡傳過來好了,那樣還能通過他的屬性Set方法來驗證一下.
public static List<UserInfo> GetUserInfoList(UserInfo info,int start,int max, string sort){......}
那麼我們捎帶的就把分頁也做了吧.
根據我們的要求就把原來的方法改寫成↑這樣的了.傳遞了一個對象和分頁的兩個參數
在這裡我們可以和上次說到的排序那樣來在ObjectDataSource中設定這兩個參數他們分別是
StartRowParameterName和MaximumRowsParamterName
但是我這裡使用通過在ObjectDataSource的Selecting事件中給這個賦值,這樣就直接可以使用第三方的分頁控制項了
protected void ObjectDataSource1_Selecting(object sender, ObjectDataSourceSelectingEventArgs e) { Models.UserInfo info = new Models.UserInfo(); info.uname = txt_name.Text; e.InputParameters["info"] = info; e.InputParameters["start"]=傳入的值; e.InputParameters["max"]=傳入的值; }
這樣我們就可以將你自己賦值的info對象和從分頁控制項得來的start和max值傳入到BLL中的Select方法中了.
這裡講述了如何通過事件給已訂好的方法動態傳遞你的值.
這裡需要注意:因為現在的參數是後期才賦值的所以你必須在你的查詢按鈕中添加一句話
protected void btn_query_Click(object sender, EventArgs e) { GridView1.DataBind();//這裡必須重新綁定一下GridView }