前言:
在學習ASP.NET2.0的時候發現在操作資料的時候微軟給我們提供了幾個資料來源控制項.
然而每個控制項也有各自的優缺點.比如說SqlDataSource使用起來方便.
可是在我們做項目中時常要將項目分層次來進行開發.於是我很少用到SqlDataSource,那麼就開始關注ObjectDataSource了.
但是在使用的時候發現有很多問題.到網上尋找確沒有一些很好的答案,問到多數的前輩大部分都是說從來不用這個東西.^_^
其實按照以前的寫法我也可以不用.但是出於研究的目的於是乎自己弄的試了試.那下面的內容就是在學習中遇到的問題並找到解決的答案,如果你也在學習這個ObjectDataSource那麼你可以看看我解決的方式和你的方式有什麼區別.有了好的可一定要告我.
第一部分 使用ObjectDataSource實現顯示和排序
在這裡我使用的是泛型集合,所以我做查詢的時候返回的不是DataSet,那麼就先編寫DAL中的返回泛型結合的方法了
#region 顯示 public static SortableList<UserInfo> GetUserInfoList() { SortableList<UserInfo> list = new SortableList<UserInfo>(); using (SqlDataReader dr = Database.ExecuteReader(Database.ConnectionString, CommandType.Text, "select * from userinfo")) { while (dr.Read()) { UserInfo info = new UserInfo(); info.id = Convert.ToInt16(dr["id"]); info.uname = dr["uname"].ToString(); info.age = Convert.ToInt16(dr["age"]); info.sex = (int)dr["sex"]; list.Add(info); } } return list; } #endregion
通過上面的代碼就實現了返回一個UserInfo的集合
為了使ObjectDataSource在使用的時候能直接找到用於處理的類和方法就需要給類和方法加上相關的屬性描述
using System;using System.Collections.Generic;using System.Text;using System.ComponentModel;//首先這裡要引用相關的命名空間 using Models;namespace BLL{ [DataObject()]//這裡給類加上描述 public class UserInfoBLL { [DataObjectMethod(DataObjectMethodType.Select)]//這裡告訴ObjectDataSource是用來查詢的方法 public static List<UserInfo> GetUserInfoList(string sort) { SortableList<UserInfo> list = DAL.UserInfoDAL.GetUserInfoList(); if (!sort.Equals("")) { bool flag = true; if (sort.IndexOf("DESC")!=-1) { flag = false; } list.Sort(sort.Replace(" DESC",""), flag); } return list; } [DataObjectMethod(DataObjectMethodType.Insert)] public static void InserUserInfo(UserInfo info) { DAL.UserInfoDAL.InsertUserInfo(info); } [DataObjectMethod(DataObjectMethodType.Update)] public static void UpdateUserInfo(UserInfo info) { DAL.UserInfoDAL.UpdateUserInfo(info); } [DataObjectMethod(DataObjectMethodType.Delete)] public static void DeleteUserInfo(UserInfo info) { DAL.UserInfoDAL.DeleteUserInfo(info); } public static void DeleteMulutiUserInfo(string userlist) { DAL.UserInfoDAL.DeleteMulutiUserInfo(userlist); } }}
然後就可以在你的ASP.NET頁面中添加GridView和ObjectDataSource控制項了.剩下就是配置你的資料來源
這裡面選著你的Select方法
對於下一步要求的輸入sort參數這裡不做設定就按照預設的方式
然後你就可以高興的運行起來看一下了.showshow我的效果
那如果沒有問題接下來做我們的排序吧.因為我們在編寫後台代碼的時候已經添加了一個sort參數,所以這裡就簡單了.
首先設定ObjectDataSource的一個屬性SortParamterName 這裡我們設定為剛才BLL中的那個傳入的那個參數sort
然後就可以啟用排序內容了
現在就能實現排序了.當然我這裡是重新寫了個sortlist的泛型集合.對於普通的應用你可以通過直接變化你的SQL語句來實現這個排序的功能.應為當你第一次點擊某一列的時候他會傳入那個列名,比如ID,而第二次點擊則會傳入ID DESC