/Tosouth/WWW/Admin/Search.aspx.cs

http://lefter.googlecode.com/ · C# · 157 lines · 145 code · 12 blank · 0 comment · 23 complexity · 0595cf073dc5e839f18a0dc657660cd1 MD5 · raw file

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Web;
  4. using System.Web.UI;
  5. using System.Web.UI.WebControls;
  6. using System.Configuration;
  7. namespace Directory.Web
  8. {
  9. public partial class Search : System.Web.UI.Page
  10. {
  11. protected int pageIndex;
  12. protected int pageSize = WebSettings.GetInstance().SearchItemPageSize;
  13. protected int itemsRecords;
  14. protected string categoryIdKey = "categoryId";
  15. protected string pageKey = "page";
  16. protected string keywordsKey = "key";
  17. protected string searchtypeKey = "searchtype";
  18. protected void Page_Load(object sender, EventArgs e)
  19. {
  20. int searchtype = 0;
  21. int.TryParse(Request.QueryString[searchtypeKey], out searchtype);
  22. if (!IsPostBack)
  23. {
  24. ddlSearchType.Items.Clear();
  25. ddlSearchType.Items.Add(Resources.Resource.Item);
  26. ddlSearchType.Items.Add(Resources.Resource.Category);
  27. ddlSearchType.Items.Add("??");
  28. ddlSearchType.SelectedIndex = 0;
  29. if (!int.TryParse(Request.QueryString[pageKey], out pageIndex))
  30. {
  31. pageIndex = 0;
  32. }
  33. string keywords = string.Empty;
  34. try
  35. {
  36. keywords = Server.UrlDecode(Request.QueryString[keywordsKey]).Trim();
  37. }
  38. catch
  39. {
  40. ltMsg.Text = "?????????";
  41. return;
  42. }
  43. if (string.IsNullOrEmpty(keywords))
  44. {
  45. ltMsg.Text = "?????????";
  46. return;
  47. }
  48. ddlSearchType.SelectedIndex = searchtype;
  49. try
  50. {
  51. if (searchtype == 1 || searchtype == 2)
  52. {
  53. rptCateogrys.DataSource = CategoryDataProxy.SearchCategories(keywords);
  54. rptCateogrys.DataBind();
  55. this.pagebreak.Visible = false;
  56. }
  57. if (searchtype == 0 || searchtype == 2)
  58. {
  59. rptItemsList.DataSource = ItemDataProxy.SearchItems(-999, keywords, pageIndex, pageSize, out itemsRecords);
  60. rptItemsList.DataBind();
  61. this.pagebreak.Visible = true;
  62. SetPageNav();
  63. }
  64. }
  65. catch
  66. {
  67. tbKeywords.Text = "???????";
  68. return;
  69. }
  70. tbKeywords.Text = keywords;
  71. }
  72. }
  73. protected void btnSearch_Click(object sender, EventArgs e)
  74. {
  75. Server.Transfer("Search.aspx?" + keywordsKey + "=" + Server.UrlEncode(tbKeywords.Text) + "&" + searchtypeKey + "=" + ddlSearchType.SelectedIndex);
  76. }
  77. private string GetPageNavigateUrl(int _pageIndex)
  78. {
  79. return "Search.aspx?" + "&" + keywordsKey + "=" + Request.QueryString[keywordsKey] + "&" + pageKey + "=" + _pageIndex.ToString() + "&" + searchtypeKey + "=" + ddlSearchType.SelectedIndex;
  80. }
  81. private void SetPageNav()
  82. {
  83. int pageCounts = ((itemsRecords - 1) / pageSize) + 1;
  84. lbCurrentPage.Text = (pageIndex + 1) + " / " + pageCounts;
  85. if (pageCounts < 1)
  86. {
  87. hplFirstPage.Enabled = false;
  88. hplPrePage.Enabled = false;
  89. hplNextPage.Enabled = false;
  90. hplLastPage.Enabled = false;
  91. }
  92. else if (pageIndex == 0)
  93. {
  94. hplFirstPage.Enabled = false;
  95. hplPrePage.Enabled = false;
  96. if (pageCounts == 1)
  97. {
  98. hplNextPage.Enabled = false;
  99. hplLastPage.Enabled = false;
  100. }
  101. else
  102. {
  103. hplNextPage.Enabled = true;
  104. hplNextPage.NavigateUrl = GetPageNavigateUrl(pageIndex + 1);
  105. hplLastPage.Enabled = true;
  106. hplLastPage.NavigateUrl = GetPageNavigateUrl(pageCounts - 1);
  107. }
  108. }
  109. else if (pageIndex >= pageCounts - 1)
  110. {
  111. pageIndex = pageCounts - 1;
  112. hplFirstPage.Enabled = true;
  113. hplFirstPage.NavigateUrl = GetPageNavigateUrl(0);
  114. hplPrePage.Enabled = true;
  115. hplPrePage.NavigateUrl = GetPageNavigateUrl(pageIndex - 1);
  116. hplNextPage.Enabled = false;
  117. hplLastPage.Enabled = false;
  118. }
  119. else
  120. {
  121. hplFirstPage.Enabled = true;
  122. hplFirstPage.NavigateUrl = GetPageNavigateUrl(0);
  123. hplPrePage.Enabled = true;
  124. hplPrePage.NavigateUrl = GetPageNavigateUrl(pageIndex - 1);
  125. hplNextPage.Enabled = true;
  126. hplNextPage.NavigateUrl = GetPageNavigateUrl(pageIndex + 1);
  127. hplLastPage.Enabled = true;
  128. hplLastPage.NavigateUrl = GetPageNavigateUrl(pageCounts - 1);
  129. }
  130. }
  131. protected void rptItemsList_ItemDataBound(object sender, RepeaterItemEventArgs e)
  132. {
  133. Directory.Model.ItemInfo item = (Directory.Model.ItemInfo)e.Item.DataItem;
  134. Literal lt = e.Item.FindControl("ltCategoryPath") as Literal;
  135. if (lt != null && item != null)
  136. {
  137. foreach (Directory.Model.CategoryInfo cat in CategoryDataProxy.GetRecursiveParentsOfCategory(item.CategoryId))
  138. {
  139. string link = string.Format("<a href='#' onclick=\"window.open('categorydetails.aspx?categoryId={0}')\">{1}</a>", cat.CategoryId.ToString(), cat.CategoryName);
  140. lt.Text += "ť" + link;
  141. }
  142. }
  143. }
  144. }
  145. }