讓aspx頁面自主控制調(diào)用記錄的數(shù)量,類型,隨時(shí)更改,不用重新編譯的實(shí)現(xiàn)方法
更新時(shí)間:2011年08月17日 23:45:21 作者:
我們經(jīng)常會(huì)做一些企業(yè)站點(diǎn),為了數(shù)據(jù)調(diào)用,我們傷透腦筋,我們想方設(shè)法讓數(shù)據(jù)顯示變得簡單,又易于維護(hù),這使得我們創(chuàng)造諸于模板之類的東東去搞企業(yè)站,門戶等,
然而,殺雞焉用牛刀,對于小型站點(diǎn),我們完全可以從.net強(qiáng)大的功能中,翻出一些來方便我們使用.
我們知道一個(gè)頁面經(jīng)常會(huì)調(diào)用很多數(shù)據(jù),有列表,有單條的,特別是列表,我們經(jīng)常為不同的列表在.cs文件寫不同的方法,一一采用"列表.DataSource=數(shù)據(jù)源;列表.DataBind();來完成綁定,這令到我們的 cs頁面雍腫不堪!!!我經(jīng)常有要推倒重來的沖動(dòng),但周而復(fù)始,我又寫出一堆拉圾-_-!.好吧,這次我決定只寫一個(gè)方法,不到15行的方法,就滿足整個(gè)頁面文章的調(diào)用.
我們需要用到的常識(shí)有"后期綁定","先運(yùn)行CS再aspx",相信大家都已經(jīng)具備.我們言歸正傳:
第一步:首先在cs中定義一個(gè)受保護(hù)的方法:
/// <summary>
/// 獲取新聞數(shù)據(jù)列表
/// </summary>
/// <param name="num">請求數(shù)量</param>
/// <param name="cateId">類別ID</param>
/// <param name="isTop">是否置頂</param>
/// <param name="isCommend">是否推薦</param>
/// <returns>一個(gè)新聞數(shù)據(jù)集,News是新聞,當(dāng)然,List<XXXX>名稱取決于你的數(shù)據(jù)源</returns>
protected List<News> GetNewsData(int num,int cateId,int isTop,int isCommend){
if (num < 0) num = 0;
List<News> result = new List<News>();
Expression<Func<News, bool>> expr = PredicateExtensionses.True<News>();
if (isPic) {
expr = expr.And(c => c.IsPic == 1);
}
if (cateId > 0) {
expr = expr.And(c => c.cateId == cateId);
}
if (isTop > -1) {
expr = expr.And(c => c.IsTop == isTop);
}
if (isCommend > -1) {
expr = expr.And(c => c.IsCommend == isCommend);
}
return nm.AllNews.Where(expr).OrderByDescending(c=>c.ID).Take(num).ToList();
}
第二步:在Page_Load方法中,調(diào)用DataBind();
protected void Page_Load(object sender, EventArgs e)
{
DataBind();
}
以上是我方法的全部,這里要說一下的是調(diào)用業(yè)務(wù)邏輯中一個(gè)創(chuàng)建表達(dá)式樹的公共類,這個(gè)類在這里(http://chabaoo.cn/article/28043.htm ),及通用業(yè)務(wù)邏輯類;
第三步,接下來是我們的aspx調(diào)用了.這里我用最簡單的Repeater來說明!
<asp:Repeater ID="Repeater6" runat="server" DataSource='<%#GetNewsData(10,3548,-1,-1)%>'>
<ItemTemplate>
<%#Eval("Subject")%>
</ItemTemplate>
</asp:Repeater>
好了,所有工作結(jié)束.以后要調(diào)用其它的類別,或者數(shù)量要改變時(shí),只需要在頁面上改動(dòng)就行了,不需要改動(dòng).cs和編譯!
是不是挺方便?
關(guān)于DataBind()的說明,為什么要在Page_load中寫DataBind(),這是提前給數(shù)據(jù)源以數(shù)據(jù)!否則,因?yàn)楹笃诮壎ǖ年P(guān)系,會(huì)令到數(shù)據(jù)控件找不到數(shù)據(jù)源而報(bào)錯(cuò)!
我們知道一個(gè)頁面經(jīng)常會(huì)調(diào)用很多數(shù)據(jù),有列表,有單條的,特別是列表,我們經(jīng)常為不同的列表在.cs文件寫不同的方法,一一采用"列表.DataSource=數(shù)據(jù)源;列表.DataBind();來完成綁定,這令到我們的 cs頁面雍腫不堪!!!我經(jīng)常有要推倒重來的沖動(dòng),但周而復(fù)始,我又寫出一堆拉圾-_-!.好吧,這次我決定只寫一個(gè)方法,不到15行的方法,就滿足整個(gè)頁面文章的調(diào)用.
我們需要用到的常識(shí)有"后期綁定","先運(yùn)行CS再aspx",相信大家都已經(jīng)具備.我們言歸正傳:
第一步:首先在cs中定義一個(gè)受保護(hù)的方法:
復(fù)制代碼 代碼如下:
/// <summary>
/// 獲取新聞數(shù)據(jù)列表
/// </summary>
/// <param name="num">請求數(shù)量</param>
/// <param name="cateId">類別ID</param>
/// <param name="isTop">是否置頂</param>
/// <param name="isCommend">是否推薦</param>
/// <returns>一個(gè)新聞數(shù)據(jù)集,News是新聞,當(dāng)然,List<XXXX>名稱取決于你的數(shù)據(jù)源</returns>
protected List<News> GetNewsData(int num,int cateId,int isTop,int isCommend){
if (num < 0) num = 0;
List<News> result = new List<News>();
Expression<Func<News, bool>> expr = PredicateExtensionses.True<News>();
if (isPic) {
expr = expr.And(c => c.IsPic == 1);
}
if (cateId > 0) {
expr = expr.And(c => c.cateId == cateId);
}
if (isTop > -1) {
expr = expr.And(c => c.IsTop == isTop);
}
if (isCommend > -1) {
expr = expr.And(c => c.IsCommend == isCommend);
}
return nm.AllNews.Where(expr).OrderByDescending(c=>c.ID).Take(num).ToList();
}
第二步:在Page_Load方法中,調(diào)用DataBind();
復(fù)制代碼 代碼如下:
protected void Page_Load(object sender, EventArgs e)
{
DataBind();
}
以上是我方法的全部,這里要說一下的是調(diào)用業(yè)務(wù)邏輯中一個(gè)創(chuàng)建表達(dá)式樹的公共類,這個(gè)類在這里(http://chabaoo.cn/article/28043.htm ),及通用業(yè)務(wù)邏輯類;
第三步,接下來是我們的aspx調(diào)用了.這里我用最簡單的Repeater來說明!
復(fù)制代碼 代碼如下:
<asp:Repeater ID="Repeater6" runat="server" DataSource='<%#GetNewsData(10,3548,-1,-1)%>'>
<ItemTemplate>
<%#Eval("Subject")%>
</ItemTemplate>
</asp:Repeater>
好了,所有工作結(jié)束.以后要調(diào)用其它的類別,或者數(shù)量要改變時(shí),只需要在頁面上改動(dòng)就行了,不需要改動(dòng).cs和編譯!
是不是挺方便?
關(guān)于DataBind()的說明,為什么要在Page_load中寫DataBind(),這是提前給數(shù)據(jù)源以數(shù)據(jù)!否則,因?yàn)楹笃诮壎ǖ年P(guān)系,會(huì)令到數(shù)據(jù)控件找不到數(shù)據(jù)源而報(bào)錯(cuò)!
相關(guān)文章
DataSet.Tables[].Rows[][]的用法詳細(xì)解析
以下是對DataSet.Tables[].Rows[][]的用法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-09-09分享Visual Studio原生開發(fā)的10個(gè)調(diào)試技巧(2)
這篇文章又為大家分享了Visual Studio原生開發(fā)的10個(gè)調(diào)試技巧,感興趣的朋友可以參考一下2015-11-11WPF實(shí)現(xiàn)左右移動(dòng)(晃動(dòng))動(dòng)畫效果
這篇文章主要為大家詳細(xì)介紹了WPF實(shí)現(xiàn)左右移動(dòng)或晃動(dòng)動(dòng)畫效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12.net下實(shí)現(xiàn)Word動(dòng)態(tài)填加數(shù)據(jù)打印
.net下實(shí)現(xiàn)Word動(dòng)態(tài)填加數(shù)據(jù)打印...2007-04-04MVC+EasyUI+三層架構(gòu)簡單權(quán)限管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了MVC+EasyUI+三層架構(gòu)簡單權(quán)限管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-07-07ASP.NET Core中使用EPPlus導(dǎo)入出Excel文件的完整步驟
這篇文章主要給大家介紹了關(guān)于ASP.NET Core中如何使用EPPlus導(dǎo)入出Excel文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02AspNetPager+GridView實(shí)現(xiàn)分頁的實(shí)例代碼
AspNetPager+GridView實(shí)現(xiàn)分頁的實(shí)例代碼,需要的朋友可以參考一下2013-03-03