前言:
在学习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