国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

ASP.NET動(dòng)態(tài)屬性篩選和分頁(yè)綁定

2019-11-14 15:47:51
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

分頁(yè)控件為:aspNetPager.dll

我們先建立一個(gè)產(chǎn)品屬性名稱表

CREATE TABLE PRoductAttr(    [ID] [int] IDENTITY(1,1) NOT NULL primary key,    [ParentID] [int] NULL,    [Kind] [int] NULL,    [CNName] [nvarchar](50) NOT NULL,    [ENName] [nvarchar](50) NOT NULL,    [Sort] [int] NOT NULL,    [AddTime] [datetime],)

 

再建一個(gè)屬性內(nèi)容表

CREATE TABLE ProductAttrInfo(    [ID] [int] IDENTITY(1,1) NOT NULL primary key,    [ParentID] [int] NULL,    [CNName] [nvarchar](50) NOT NULL,    [Sort] [int] NOT NULL,    [AddTime] [datetime] NOT NULL,    [Color] [nvarchar](50) NULL,)

 

產(chǎn)品表叫Product

頁(yè)面呈現(xiàn)效果為:

 

其中的產(chǎn)品分類、形狀、其他為動(dòng)態(tài)的產(chǎn)品屬性名稱,對(duì)象相關(guān)的屬性內(nèi)容。

 

我們首頁(yè)要把相關(guān)的內(nèi)容綁定,然后再根據(jù)傳參,把相關(guān)的屬性編號(hào)和內(nèi)容編號(hào),通過(guò)正則的方式找出來(lái),然后把當(dāng)前也是和屬性內(nèi)容的ID找出來(lái),方便我們查詢產(chǎn)品。

 

/// <summary>/// 通過(guò)正則,把相關(guān)的屬性ID拿到,然后判斷屬性名稱ID的值即為屬性值的ID值/// </summary>/// <param name="ids"></param>/// <returns></returns>protected int getAttrSql(int ids){    int value = 0;    string url = Request.Url.ToString().ToLower();    if (url.IndexOf("?") >= 0)    {        string index = url.Remove(0, url.IndexOf("?") + 1);        string para = index.Replace("?", "");        //切割成一個(gè)一個(gè)的參數(shù)并轉(zhuǎn)換成SQL語(yǔ)句        string[] ps = para.Split('&');        string sql = "";        for (int i = 0; i < ps.Length; i++)        {            string s = ps[i];            //檢查參數(shù)是否是p/d*=/d*開(kāi)頭的,如果是則認(rèn)為這個(gè)參數(shù)是屬性的參數(shù)            if (System.Text.RegularExpressions.Regex.IsMatch(s, @"p/d{1,}=/d{1,}"))            {                //去掉p切割成數(shù)字                string[] pp = s.Replace("p", "").Split('=');                int c = int.Parse(pp[0].ToString());                if (c == ids)                {                    value = int.Parse(pp[1].ToString());                    break;                }            }        }    }    return value;}
/// <summary>/// 綁定相關(guān)屬性名稱和內(nèi)容,其中參數(shù)one和two,我這里是一級(jí)二級(jí)產(chǎn)品編號(hào),可以忽略,ParentID為一級(jí)產(chǎn)品分類的ID,Kind為二級(jí)產(chǎn)品分類的ID/// </summary>/// <param name="one"></param>/// <param name="two"></param>public void BindAttrInfo(Model.ProductType one, Model.ProductType two){    StringBuilder sb = new StringBuilder();    //if (two != null)    //{    //    List<Model.ProductAttr> list = new BLL.ProductAttr().GetList(0, "CNName,ID", "ParentID=" + one.ID + " and Kind=" + two.ID + "", "Sort desc,AddTime desc");    //    foreach (Model.ProductAttr l in list)    //    {    //        sb.AppendFormat("<dl class=/"clearfix/"><dt>{0}</dt>", l.CNName);    //        List<Model.ProductAttrInfo> list2 = new BLL.ProductAttrInfo().GetList(0, "CNName,ID", "Pid=" + l.ID + "", "Sort desc,AddTime desc");    //        if (list2.Count > 0)    //        {    //            sb.AppendFormat("<dd><a href=/"{0}/" {1}>全部</a>", getUrl("p" + l.ID.Value, ""), getAttrSql(l.ID.Value) <= 0 ? "class=/"cur/"" : "");    //            foreach (Model.ProductAttrInfo l2 in list2)    //            {    //                sb.AppendFormat("<a href=/"{0}/" {1}>{2}</a>", getUrl("p" + l.ID.Value, l2.ID.Value.ToString()), getAttrSql(l.ID.Value) == l2.ID.Value ? "class=/"cur/"" : "", l2.CNName);    //            }    //            sb.AppendFormat("</dd>");    //        }    //        sb.Append("</dl>");    //    }    //}    //else    //{    List<Model.ProductType> twoType = new BLL.ProductType().GetList(0, "CNName,ID", "IsPass=1 and Kind=" + one.ID + "", "Sort desc,AddTime desc");    if (twoType.Count > 0)    {        sb.AppendFormat("<dl class=/"clearfix/"><dt>產(chǎn)品分類</dt><dd>");        sb.AppendFormat("<a {1} href=/"/products/?ParentID={0}/">全部</a>", one.ID, Kind <= 0 ? "class=/"cur/"" : "");        foreach (Model.ProductType l in twoType)        {            sb.AppendFormat("<a href=/"/products/?ParentID={0}&Kind={1}/" {3}>{2}</a>", one.ID.Value, l.ID.Value, l.CNName, Kind == l.ID.Value ? "class=/"cur/"" : "");        }        sb.AppendFormat("</dd></dl>");    }    List<Model.ProductAttr> list = new BLL.ProductAttr().GetList(0, "CNName,ID", "ParentID=" + one.ID + " and Kind=0", "Sort desc,AddTime desc");    foreach (Model.ProductAttr l in list)    {        sb.AppendFormat("<dl class=/"clearfix/"><dt>{0}</dt>", l.CNName);        List<Model.ProductAttrInfo> list2 = new BLL.ProductAttrInfo().GetList(0, "CNName,ID", "Pid=" + l.ID + "", "Sort desc,AddTime desc");        if (list2.Count > 0)        {            sb.AppendFormat("<dd><a href=/"{0}/" {1}>全部</a>", getUrl("p" + l.ID.Value, ""), getAttrSql(l.ID.Value) <= 0 ? "class=/"cur/"" : "");            foreach (Model.ProductAttrInfo l2 in list2)            {                sb.AppendFormat("<a href=/"{0}/" {1}>{2}</a>", getUrl("p" + l.ID.Value, l2.ID.Value.ToString()), getAttrSql(l.ID.Value) == l2.ID.Value ? "class=/"cur/"" : "", l2.CNName);            }            sb.AppendFormat("</dd>");        }        sb.Append("</dl>");    }    // }    Lit_ProductAttrList.Text = sb.ToString();}
/// <summary>/// 綁定產(chǎn)品/// </summary>public void BindProducts(){    string where = "ParentID=" + ParentID + "";    if (Kind > 0)    {        where += " and Kind=" + Kind + "";        where += GetWhereAttr();    }    else    {
where += GetWhereAttr(); } string strOrder = "Sort desc,AddTime desc"; if (OrderBy == 1) { strOrder = "SaleNum desc,Sort desc,AddTime desc"; } else if (OrderBy == 2) { strOrder = "SalPrice,Sort desc,AddTime desc"; } Model.PageData<Model.Product> data = new BLL.Product().GetList(20, base.PageIndex, "", where, strOrder); repList.DataSource = data.DataSoure; repList.DataBind(); pgServer.RecordCount = data.Count; pgServer.UrlRewritePattern = getUrl("1", "1").Replace("#pro-list", "") + "&page={0}#pro-list"; pgServer.PageSize = 20; AllCount = data.Count; AllPage = data.PageCount; ThisPage = base.PageIndex; if (ThisPage < 1) { ThisPage = 1; } if (AllPage == 0) { ThisPage = 0; } pgServer.DataBind();}
/// <summary>/// 獲取Url/// </summary>/// <param name="name"></param>/// <param name="value"></param>/// <returns></returns>protected string getUrl(string name, string value){    string url = System.Text.RegularExpressions.Regex.Replace(Request.Url.Query.Trim(), @"^/?", "");    url = System.Text.RegularExpressions.Regex.Replace(url, "^" + name + "=.*?&|" + name + "=.*?&", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    url = System.Text.RegularExpressions.Regex.Replace(url, "&{0,1}" + name + "=.*", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    url = System.Text.RegularExpressions.Regex.Replace(url, "^page=.*?&|page=.*?&", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    url = System.Text.RegularExpressions.Regex.Replace(url, "&{0,1}page=.*", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    if (url.Trim() == "")    {        return "/products/?" + name + "=" + value + "#pro-list";    }    return getReplaceUrl("/products/?" + name + "=" + value + "&" + url.Replace("#pro-list", "") + "#pro-list", "key");}/// <summary>/// 獲取Url/// </summary>/// <param name="name"></param>/// <param name="value"></param>/// <returns></returns>protected string getReplaceUrl(string url, string name){    url = System.Text.RegularExpressions.Regex.Replace(url, "^" + name + "=.*?&|" + name + "=.*?&", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    url = System.Text.RegularExpressions.Regex.Replace(url, "^page=.*?&|page=.*?&", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    url = System.Text.RegularExpressions.Regex.Replace(url, "&{0,1}page=.*", "", System.Text.RegularExpressions.RegexOptions.IgnoreCase);    return url;}
/// <summary>/// 獲取屬性條件-綁定/// </summary>/// <returns></returns>protected string GetWhereAttr(string where){    string value = "";    string url = Request.Url.ToString().ToLower();    if (url.IndexOf("?") >= 0)    {        string index = url.Remove(0, url.IndexOf("?") + 1);        string para = index.Replace("?", "");        //切割成一個(gè)一個(gè)的參數(shù)并轉(zhuǎn)換成SQL語(yǔ)句        string[] ps = para.Split('&');        string sql = "";        for (int i = 0; i < ps.Length; i++)        {            string s = ps[i];            //檢查參數(shù)是否是p/d*=/d*開(kāi)頭的,如果是則認(rèn)為這個(gè)參數(shù)是屬性的參數(shù)            if (System.Text.RegularExpressions.Regex.IsMatch(s, @"p/d{1,}=/d{1,}"))            {                //去掉p切割成數(shù)字                string[] pp = s.Replace("p", "").Split('=');                int c = int.Parse(pp[1].ToString());                //c為屬性內(nèi)容的編號(hào),根據(jù)程序自己做判斷            }        }    }    return value;}

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 安义县| 隆尧县| 手机| 图片| 阿坝| 远安县| 台南市| 凤山市| 长岛县| 福建省| 道真| 乐东| 漳州市| 上高县| 资中县| 曲沃县| 平潭县| 白山市| 峨眉山市| 迁安市| 玉屏| 高青县| 晋宁县| 抚州市| 班玛县| 西充县| 普陀区| 遂平县| 都安| 多伦县| 荣成市| 昭觉县| 读书| 疏附县| 昌平区| 兴安盟| 奉节县| 上思县| 莒南县| 水富县| 天津市|