真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

LINQ+Ajax動態(tài)查詢怎么使用

本篇內(nèi)容主要講解“LINQ+Ajax動態(tài)查詢怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“LINQ+Ajax動態(tài)查詢怎么使用”吧!

創(chuàng)新互聯(lián)制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設(shè)計,成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計,網(wǎng)站設(shè)計,企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務(wù),680元做網(wǎng)站,已為1000多家服務(wù),創(chuàng)新互聯(lián)網(wǎng)站建設(shè)將一如既往的為我們的客戶提供最優(yōu)質(zhì)的網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷推廣服務(wù)!

思路:

1.前臺發(fā)出請求 寫明 調(diào)用的 modleName 和 一些屬性 的過濾

如:Author like,1 ModelName Article   搜索作者 包含 1   對象名 文章

2.后臺接受 處理傳遞的參數(shù)

3.根據(jù) 對象名 調(diào)用 對象 并過濾

4.根據(jù) 對象名 返回 對應(yīng) 頁面

1.前臺JS 代碼

前臺代碼

//===============//后臺任一 類型  列表//========================function AjaxForList(duixiang, pageid) {      var searchWords = $("#SearchWords").val();      var searchType = $("#SearchType").val();      var channelId = $("#list").val();      var IsRecycle = $("#IsRecycle").attr("checked");    //排序名      var sortName = "CreaterData";      //==================IsRecycle    var Del = new Array();      Del.push("=");   //alert(IsRecycle);      if (IsRecycle) { Del.push(1);   }      else { Del.push(0); }      //==================FullTitle      // 2010-3-22 0:00:00    var FullTitle = new Array();      FullTitle.push("like");      FullTitle.push("1");      //==================FullTitle      var Author = new Array();      Author.push("like");      Author.push("1");      //==================IsAudit           var IsAudit = new Array();      IsAudit.push("=");      IsAudit.push("0");      //============================    $.ajax(//        {        type: "POST",        url: "/Admin/UserKJ/AjaxForList",       data: "ModelName=" + duixiang + "&&PageId=" + pageid + "&&sortName=" + sortName + "&&Del=" + Del + "&&FullTitle=" + FullTitle + "&&Author=" + Author + "&&IsAudit=" + IsAudit,        dataType: "html",        beforeSend: function(XMLHttpRequest) {   //            $(".PagerModeList").html(" ========LODING !!============");        },        success: function(html) {              //if (m != null)              //  alert(html);              $(".PagerModeList").html(html);                     },          complete: function(XMLHttpRequest, textStatus) {              //HideLoading();          },          error: function() {              //請求出錯處理              $(".PagerModeList").html("加載失敗");          }    }                                 )  //end $.ajax};   // end  AjaxRequest()   {
 

2后臺接收:

使用 自定義的 兩個 字典 合并成 一個 key-action-value 的字典

代碼

public class SearchPage    {          public string ModelName { set; get; }          public int PageId { set; get; }          public string sortName { get; set; }          ///           /// RequestFormDictionary          ///           public ThreeDictionary RFD = new ThreeDictionary();        public SearchPage()          {              RFD = new ThreeDictionary();          }          public void InitDictionary(System.Web.HttpRequestBase httpRequestBase)          {              var requestForm = httpRequestBase.Form;       foreach (var collection in requestForm.AllKeys)// x=     Article,0,,1,0,false  o=xx,xx;              {                  string actionAndvalue = requestForm.Get(collection);                  if (string.IsNullOrEmpty(collection)) continue;//把參數(shù)分離                    List templist = actionAndvalue.splitString(',');                  if (templist.Count() < 2) continue;                RFD.Add(collection, templist[0], templist[1]);              }          }          public string Dictionary2SQL()          {            StringBuilder stringBuilder = new StringBuilder();              int count = 0;              foreach (var keyActon in RFD.keyActons)            {                  if (keyActon.Value == "Value") continue;   // @1特別指定 如果 是 動作是 Value  則 表示 直接意思                  string value = RFD.keyValues[keyActon.Key];                  if (count != 0) stringBuilder.Append(" and  ");                  count++;                  if (keyActon.Value == "like")                {                      //     continue;      //FullTitle.Contains(\"11\")                 stringBuilder.Append(string.Format(" {0}.Contains(\"{2}\") ", keyActon.Key, keyActon.Value, value));                  continue;                  }                  stringBuilder.Append(string.Format(" {0} {1} {2} ", keyActon.Key, keyActon.Value, value));              }              return stringBuilder.ToString();          }               }
 

3.根據(jù) 對象名 調(diào)用 對象 并過濾

代碼

private readonly Repository2.IRepositoryResolver IRR;          public UserKJController()        {                          IRR = CMSContainer.GetContainer()[typeof(IRepositoryResolver)] as IRepositoryResolver;          }

這里用到了 一個 CASTLE  和 一個 Repository 相信 能看到這里的 應(yīng)該都知道這些吧。

不知道的話 文末 會給出 鏈接。

AjaxForList

public ActionResult AjaxForList(SearchPage searchPage){//  Response.Write(DateTime.Now);searchPage.InitDictionary(Request);//把 字符串裝進字典里面IRepository ir = IRR.GetRepository(searchPage.ModelName.str2type());  //根據(jù)類型得到要操作的類var iq = ir.GetAll();//   得到所有iq = iq.Order(searchPage.sortName);   //   并 排序iq = iq.Where(searchPage.Dictionary2SQL());//根據(jù) 字典 自動 過濾PagerInfo pif = new PagerInfo(iq.Count(), searchPage.PageId);  //頁信息iq = iq.Skip(pif.PageSize * (pif.CurrentPage - 1)).Take(pif.PageSize);        //分頁PagerIndexpagerIndex2 = new PagerIndex(pif, iq);//裝配//Response.Write(DateTime.Now.ToLongTimeString());return View("AjaxListFor" + searchPage.ModelName, pagerIndex2);      //返回}

這里 用到了  System.Linq.Dynamic;

來做核心 的 排序和過濾 。

然后放出一個 firebug的 圖

LINQ+Ajax動態(tài)查詢怎么使用

通過我自己代碼輸出耗費的時間 不用1s 而且還是我本機的破機子,1G的內(nèi)存條郁悶要死。

比我原來預(yù)想的 泛型會很耗性能。 感覺好了很多。

這是我沒找到  Dynamic 之前 自己做的一個 輪子

辛辛苦苦做出來 還不支持 nullable的 類型 ,

想了辦法 二次調(diào)用 構(gòu)造 了 c.WithPic.Value的表達式

{Table(KF_Articles).OrderBy(ArticleID => ArticleID.ArticleID).Where(item => (item.Del =  0)).Where(item => (item.WithPic.Value = 1))}

結(jié)果

LINQ+Ajax動態(tài)查詢怎么使用

跟重典兄討論一下,還是沒有結(jié)果。

等有時間再琢磨一下,希望 觀眾們 指點一下。

EqualValue我的輪子

//search/// /// 某個屬性為某個值/// /// 屬性/// 值/// 動作:    < = 等 /// public IQueryable EqualValue(string pifName, object value, ActionType action, IQueryable iq){if (iq == null) throw new Exception(" IQueryable iq  為空");if (typeof(T).GetProperty(pifName) == null)throw new Exception(pifName + "    in   " + typeof(T).Name);//1 構(gòu)造 參數(shù) item 即 Tvar itemParameter = Expression.Parameter(typeof(T), "item");IQueryable iqTemp = iq as IQueryable;// 轉(zhuǎn)換成 model 的 那種類型// 判斷是否是 Nullable 的  如果是 的話 就 把類型轉(zhuǎn)換成對應(yīng)的  非 nullable 的Type tempType = typeof(T).GetProperty(pifName).PropertyType;if (tempType.FullName.Contains("Nullable")){//組建一個表達式樹來創(chuàng)建一個參數(shù)}var tempType2 = tempType.Nullable2Not();value = Convert.ChangeType(value, tempType2);//取出他的值var left = Expression.Property(// 左邊的參數(shù)itemParameter,pifName // 屬性的  名字);var right = Expression.Constant(value);//Constant 常量  右邊的值#region   //=========================各種  action 操作BinaryExpression ep;if (action == ActionType.Equal){if (tempType.FullName.Contains("Nullable")){ParameterExpression param =Expression.Parameter(typeof(T), "item");//   item2//item2.pifName   =>    item2.WithPic//   item2.WithPic.valueMemberExpression param11 = Expression.Property(param, pifName);MemberExpression param12 = Expression.Property(param11, "Value");//      typeof(T).GetProperty(pifName).GetType().GetProperty("Value"));// ParameterExpression param2 =//Expression.Parameter(typeof(T).GetProperty(pifName).GetType(), "Value");//組建表達式樹:c.ContactNameep = Expression.Equal(param12, right);}else{ep = Expression.Equal(left, right);}}else if (action == ActionType.GreaterThan){ep = Expression.GreaterThan(left, right);}else if (action == ActionType.GreaterThanOrEqual){ep = Expression.GreaterThanOrEqual(left, right);}else if (action == ActionType.LessThan){ep = Expression.LessThan(left, right);}else if (action == ActionType.LessThanOrEqual){ep = Expression.LessThanOrEqual(left, right);}else if (action == ActionType.NotEqual){ep = Expression.NotEqual(left, right);}else{throw new Exception(action + " not find!");}#endregionvar whereExpression = Expression.Lambda>//構(gòu)造表達式(ep, new[] { itemParameter });return iqTemp.Where(whereExpression);

指出 肖坤 兄的一處小錯,Dynamic 也是支持 搜索的

//     continue;      FullTitle.Contains(\"11\")                    stringBuilder.Append(string.Format(" {0}.Contains(\"{2}\") ", keyActon.Key, keyActon.Value, value));

到此,相信大家對“LINQ+Ajax動態(tài)查詢怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!


網(wǎng)站題目:LINQ+Ajax動態(tài)查詢怎么使用
本文路徑:http://weahome.cn/article/jpcjji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部