public static IEnumerable <ArticleModels> GetItems(ArticleSearchModels search, int pageSize, int pageIndex, out int recordCount) { List <ArticleModels> items = new List <ArticleModels>(); if (search == null) { recordCount = 0; return(items); } string sql = "Select ID, CardNo, Type, Title, Link, Archive, IsIssue, IssueStart, IssueEnd, Creator From Article A Where {0} Order By Sort, CreateTime Desc"; List <string> where = new List <string>(); where.Add("MenuID = " + search.MenuID); if (!string.IsNullOrWhiteSpace(search.Key)) { string key = string.Format("Like N'%{0}%'", search.Key.Replace("'", "''")); where.Add(string.Format("(Title {0} OR Exists(Select 1 From Paragraph Where SourceNo = A.ID And (Title {0} OR Contents {0})))", key)); } if (search.Types != null && search.Types.Count() > 0) { where.Add(string.Format("ID In (Select ArticleID From ArticleToType Where TypeID In ({0}))", string.Join(", ", search.Types))); } if (search.IssueStart != null) { where.Add(string.Format("IssueEnd >= '{0:yyyy/MM/dd HH:mm}'", search.IssueStart)); } if (search.IssueEnd != null) { where.Add(string.Format("IssueStart <= '{0:yyyy/MM/dd HH:mm}'", search.IssueEnd)); } SQLData.Database db = new SQLData.Database(WebInfo.Conn); DataTable datas = db.GetPageData(string.Format(sql, string.Join(" And ", where)), pageSize, pageIndex, out recordCount); foreach (DataRow dr in datas.Rows) { items.Add(new ArticleModels { ID = (long)dr["ID"], CardNo = (long)dr["CardNo"], Type = dr["Type"].ToString().Trim(), Title = dr["Title"].ToString().Trim(), Link = dr["Link"].ToString().Trim(), Archive = dr["Archive"].ToString().Trim(), IsIssue = (bool)dr["IsIssue"], IssueStart = dr["IssueStart"] as DateTime?, IssueEnd = dr["IssueEnd"] as DateTime?, Creator = (long)dr["Creator"] }); } return(items); }
public ActionResult List(long siteId, long menuId, int?index, ArticleSearchModels search) { ViewBag.SiteID = siteId; ViewBag.MenuID = menuId; ViewBag.Types = ArticleTypesDAO.GetIssueItems(menuId); ViewBag.UploadUrl = WorkV3.Golbal.UpdFileInfo.GetVPathByMenuID(siteId, menuId).TrimEnd('/') + "/"; if (Request.HttpMethod == "GET") { if (index == null) { WorkV3.Common.Utility.ClearSearchValue(); } else { ArticleSearchModels prevSearch = WorkV3.Common.Utility.GetSearchValue <ArticleSearchModels>(); if (prevSearch != null) { search = prevSearch; } } } else if (Request.HttpMethod == "POST") { WorkV3.Common.Utility.SetSearchValue(search); } ViewBag.Search = search; Pagination pagination = new Pagination { PageIndex = index ?? 1, PageSize = WebInfo.PageSize }; int totalRecord; IEnumerable <ArticleModels> items = ArticleDAO.GetItems(search, pagination.PageSize, pagination.PageIndex, out totalRecord); pagination.TotalRecord = totalRecord; ViewBag.SitePages = WorkV3.Models.DataAccess.CardsDAO.GetPages(items.Select(item => item.CardNo)); ViewBag.ItemTypes = ArticleDAO.GetItemTypes(items.Select(item => item.ID)); ViewBag.Pagination = pagination; return(View(items)); }