All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
NET环境下水晶报表使用总结_[Asp.Net教程]
在C#中取得指定长度的字符串_[Asp.Net教程]
SQL,SERVER,DBCC命令解释_mssql学习_编程技术
PHP设计可旋转字母验证码码_[PHP教程]
Login控件在UpdatePanel内当验证用户信息成功后出现页面刷新的解决办法_[Asp.Net教程]
Delphi中管理sql server索引
SQL Server2000安全设置全攻略_[SQL Server教程]
实例讲解:.NET如何访问MySQL数据库_.net资料_编程技术
AJAX实例:动态进度条_[AJAX教程]
开发ASP.NET,Atlas服务器端Extender控件—编写服务器端Extender,&,Dfl_[Asp.Net教程]
Reading number is top 10 pictures
The Soviet union swimsuit exposure in the 70 year3
西游四格漫画(四)
这才是真正的人体艺术3
你的钱干净吗?
Household design of gorgeous series
俄罗斯台球天后惊艳魅惑1
XuRe xuan cool and refreshing photoes1
胸部遭到偷窥的女人们
Female model behind the bitterness, often being overcharged3
Small s breast enhancement demonstration
Download software ranking
Sora aoi - one of more PK
Unix video tutorial8
Tram sex maniac 2 (H) rar bag12
Unix video tutorial19
asp.netWeb服务器高级编程
Rio big adventure
Unix video tutorial17
Sora aoi, the nurse, uniform ,nursing assistant
美女写真2
Such love down(擒爱记)
delv published in(发表于) 2014/1/23 3:11:28 Edit(编辑)
ASP.NET实例:手把手教你如何扩展GridView之自动排序篇_[Asp.Net教程]

ASP.NET实例:手把手教你如何扩展GridView之自动排序篇_[Asp.Net教程]

ASP.NET实例:手把手教你如何扩展GridView之自动排序篇_[Asp.Net教程]

看到这两天园子里面“****”GridView的兄弟们可真不少,自己也手痒,也凑凑热闹,写得好,大家鼓励鼓励,写的不好,大家多多指教。
首先说说本文要实现的目的,大家都知道GridView支持排序,但是每次排序的时候,都需要给GridView添加OnSorting事件,这么繁琐而费力,作为世界上最最聪明的程序员的我们难道没有抱怨么?废话少说,不才想到了一种解决这个问题的方法,可以让大家一劳永逸。下面就让兄弟我臭摆一下,希望园子里面的高高手,大大牛们给给面子,捧捧场,别取消兄弟。
首先创建一个GridViewEx的类,并继承GridView,然后添加如下委托


public delegate void BindEventHandler();
在GridViewEx中添加如下代码:


DataSet _ds;
[Description("自定义的DataSet类型数据源"),Category("扩展")]
public virtual DataSet DataSetSource
{
get
{
return _ds;
}
set
{
_ds = value;
}
}
我们在使用GridViewEx的时候,就只需要设定DataSetSource属性,这个将限定本扩展组件只支持DataSet类型的数据源,其他类型数据源有兴趣的,大家可以进行扩展,象ArrayList,List<>这些都是可以的。
接下来的工作是为GridViewEx添加OnBind事件,如下:


public event BindEventHandler Bind;
public virtual void OnBind()
{
if (Bind != null)
{
Bind();
if (DataSetSource != null)
{
DataView dv = DataSetSource.Tables[0].DefaultView;
dv.Sort = SortExpressionStr;
this.DataSource = dv;


this.DataBind(); }
}
}
有了这个事件,我们就可以让GridView去类外部获取数据源,然后回到类本身来组织数据和进行绑定了。
接下来,需要声明两个方法


[Description("排序表达式"),Category("扩展")]
protected virtual string SortExpressionStr
{
get
{
if (ViewState["SortExpression"] == null)
{
return null;
}
return ViewState["SortExpression"].ToString();
}
set
{
ViewState["SortExpression"] = value;
}
}
[Description("排序方向"),Category("扩展")]
protected virtual string SortDirectionStr
{
get
{
if (ViewState["SortDirection"] == null)
{
return "DESC";
}
if (ViewState["SortDirection"].ToString().ToLower() != "asc" && ViewState["SortDirection"].ToString().ToLower() != "desc")
{
return "DESC";
}
return ViewState["SortDirection"].ToString();
}
set
{
ViewState["SortDirection"] = value;
}
}
和下面的属性



public string SortExpressionEx
{
get
{
if (ViewState["SortExpressionEx"] == null)
{
return null;
}
return ViewState["SortExpressionEx"].ToString();
}
set
{
ViewState["SortExpressionEx"] = value;
}
}
然后重写OnSorting事件如下:


protected override void OnSorting(GridViewSortEventArgs e)
{
SortExpressionEx = e.SortExpression;
SortExpressionStr = e.SortExpression + " " + SortDirectionStr;
OnBind();
if (SortDirectionStr.ToLower() == "asc")
{
SortDirectionStr = "DESC";
}
else
{
SortDirectionStr = "ASC";
}
}
并且增加如下的OnLoad事件


protected override void OnLoad(EventArgs e)
{
if (!Page.IsPostBack)
{
try
{
OnBind();
}
catch
{


}
}
base.OnLoad(e);
}


经过上面这样简单的改造,您再次使用GridViewEx的时候,在前台页面使用的时候,您只要按照这样的格式就可以了:


<%#Eval(''ID")%>


后台只需要添加这样的方法


public void BindData()
{
DataSet ds = new DataSet();
ds = //获得DataSet;
gridView1.DataSetSource = ds;
}
在页面中的Page_Load方法中,也不用再写
if(!Page.IsPostBack)
{
BindData();//绑定GridView的方法
}
注意,如果需要重新绑定GridView,只需要这样GridViewEx1.OnBind();即可。


来源:jillzhang的blogs







添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.