Пример #1
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack)
        {
            return;
        }
        string szWordsAllContains = "";
        string szExactPhraseContain = "";
        string szOneOfWordsAtLeastContain = "";
        string szWordNotInclude = "";
        string views = GetCookie("Setting");
        if (Request.QueryString["Word"] != null)
            szWordsAllContains = Decode(Request.QueryString["Word"]);
        if (Request.QueryString["Exact"] != null)
            szExactPhraseContain = Decode(Request.QueryString["Exact"]);
        if (Request.QueryString["One"] != null)
            szOneOfWordsAtLeastContain = Decode(Request.QueryString["One"]);
        if (Request.QueryString["Not"] != null)
            szWordNotInclude = Decode(Request.QueryString["Not"]);
        if (IsNullOrEmpty(szWordsAllContains, szExactPhraseContain, szOneOfWordsAtLeastContain, szWordNotInclude))
        {
            string searchWords = GetCookie("SearchWords");
            if(string.IsNullOrEmpty(searchWords))
                return;
            txtSearch.Text = searchWords;
            RunSearch();
            return;
        }
        int pageNum = 1;
        if (Request.QueryString["Page"] != null)
            pageNum = int.Parse(Request.QueryString["Page"]);
        SetSearchWords(szWordsAllContains, szExactPhraseContain, szOneOfWordsAtLeastContain, szWordNotInclude);
        TcpClient client;
        NetworkStream ns;
        BinaryFormatter formater;
        string hostname = ConfigurationManager.AppSettings["HostName"];
        int port = int.Parse(ConfigurationManager.AppSettings["PortNum"]);
        HttpCookie userCookie = Request.Cookies[ConfigurationManager.AppSettings["CookieName"]];
        int pageSize = 10;
        if (userCookie != null)
        {
            try
            {
                pageSize = int.Parse(Decode(userCookie.Values["PageSize"]));
            }
            catch (Exception )
            {
            }
        }
        try
        {
            client = new TcpClient(hostname, port);
            ns = client.GetStream();
            formater = new BinaryFormatter();
            SearchInfo sinfo = new SearchInfo();
            QueryInfo info = new QueryInfo();
            if (!string.IsNullOrEmpty(szWordsAllContains))
                info.WordsAllContains = szWordsAllContains;
            if (!string.IsNullOrEmpty(szExactPhraseContain))
                info.ExactPhraseContain = szExactPhraseContain;
            if (!string.IsNullOrEmpty(szOneOfWordsAtLeastContain))
                info.OneOfWordsAtLeastContain = szOneOfWordsAtLeastContain;
            if (!string.IsNullOrEmpty(szWordNotInclude))
                info.WordNotInclude = szWordsAllContains;
            info.IndexNames = GetIndexNames(views);
            info.AddFilter(new FilterCondition("", "GraphicsLabel","True"));
            sinfo.PageSize = pageSize;
            sinfo.PageNum = pageNum;
            sinfo.Query = info;
            sinfo.HighLight = true;
            formater.Serialize(ns, sinfo);
            //searchInfo = sinfo.ToString();
            SearchResult sr = (SearchResult)formater.Deserialize(ns);
            StringBuilder buffer = new StringBuilder();
            StringBuilder statis = new StringBuilder();
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(SearchRecord));
            Number.InnerText = GetStatisticString(sr.Statistics, txtSearch.Text.Trim(),pageSize, sr.PageNum);
            #region Title and Content
            //DataBaseLibrary.GraphicsManagementHandle gmh = new DataBaseLibrary.GraphicsManagementHandle();
            foreach (SearchRecord record in sr.Records)
            {
                string title, detail, xmlRecord;
                xmlRecord = GetXmlRecord(xmlSerializer, record);
                record.GetWebInfo(out title, out detail, true, false);
                detail = detail + "......";
                //标题,点击调用序列化
                if (!string.IsNullOrEmpty(title))
                    buffer.Append("<a href=\"#\" class=\"LargeTitle\" onclick=\"OpenMessage('" + GetRedirectUrl(record) + "')\"><span class=\"LargeTitle\" onmouseover=\"this.className='MouseDown'\" onmouseout=\"this.className='LargeTitle'\">" + record.Caption + ":" + title.Replace("</B><B>", "").Replace("<B>", "<font color=\"Red\">").Replace("</B>", "</font>") + "&nbsp;得分:" + record.Score.ToString() + "</span></a><br />");
                else
                    buffer.Append("<a href=\"#\" class=\"LargeTitle\" onclick=\"OpenMessage('" + GetRedirectUrl(record) + "')\"><span class=\"LargeTitle\" onmouseover=\"this.className='MouseDown'\" onmouseout=\"this.className='LargeTitle'\">" + record.Caption + "&nbsp;得分:" + record.Score.ToString() + "</span></a><br />");
                buffer.Append("<span class=\"SmallTitle\" style=\"line-height:20px\">" + detail.Replace("</B><B>", "").Replace("<B>", "<font color=\"Red\">").Replace("</B>", "</font>") + "</span><br />");
                buffer.Append("<img src=\"action_import.gif\" width=\"16px\" height=\"16px\" />&nbsp;<a href=\"#\" onclick=\"TransferString('" + Encode(xmlRecord) + "')\" class=\"SmallTitle\" >搜索关系</a>");

                //查看图形                     

                //string ID = GetPGLValue(record);
                //if (!string.IsNullOrEmpty(ID))
                //{
                //bool IsImg = gmh.GetProjectGraphicsLabel(record.Caption, ID);
                //if (IsImg)
                //{
                if (record.Caption == "遥感卫片监测调查")
                {
                    string TBH = record["JCTBH"].Value;
                    buffer.Append("&nbsp;&nbsp;&nbsp;&nbsp;<img src=\"icon_solutions_16px.gif\" width=\"16px\" height=\"16px\" />&nbsp;<a href=\"#\" onclick=\"OpenMessage('" + ConfigurationManager.AppSettings["MapPath_WP"] + "&TBH=" + TBH + "')\" class=\"SmallTitle\" >查看图形</a><br /><br />");
                }
                else
                {
                    buffer.Append("&nbsp;&nbsp;&nbsp;&nbsp;<img src=\"icon_solutions_16px.gif\" width=\"16px\" height=\"16px\" />&nbsp;<a href=\"#\" onclick=\"OpenMessage('" + ConfigurationManager.AppSettings["MapPath"] + "?BusinessName=" + Server.UrlEncode(record.Caption) + "&ProjectID=" + ID + "')\" class=\"SmallTitle\" >查看图形</a><br /><br />");
                }
                //buffer.Append("&nbsp;&nbsp;&nbsp;&nbsp;<img src=\"icon_solutions_16px.gif\" width=\"16px\" height=\"16px\" />&nbsp;<a href=\"#\" onclick=\"OpenMessage('" + ConfigurationManager.AppSettings["MapPath"] + "?BusinessName=" + Server.UrlEncode(record.Caption) + "&ProjectID=" + ID + "')\" class=\"SmallTitle\" >查看图形</a><br /><br />");
                //        }
                //        else
                //        {
                //            buffer.Append("<br /><br />");
                //        }
                //    }
                //    else
                //    {
                //        buffer.Append("<br /><br />");
                //    }
                //}
            }
            tdResult.InnerHtml = buffer.ToString();
            #endregion
            #region Page
            string url = "";
            StringBuilder pageBuilder = new StringBuilder();
            if (sr.PageNum > 1)
            {
                url = GetUrl(szWordsAllContains, szExactPhraseContain, szOneOfWordsAtLeastContain, szWordNotInclude, views, sr.PageNum - 1);
                pageBuilder.Append("<a class=\"SmallTitle\" href=\"" + url + "\" >上一页</a>&nbsp;");
            }
            if (sr.TotalPages <= 10)
            {
                for (int i = 1; i <= sr.TotalPages; i++)
                {
                    if (i != sr.PageNum)
                    {
                        url = GetUrl(szWordsAllContains, szExactPhraseContain, szOneOfWordsAtLeastContain, szWordNotInclude, views, i);
                        pageBuilder.Append("<a class=\"SmallTitle\" href=\"" + url + "\" >" + i.ToString() + "</a>&nbsp;");
                    }
                    else
                    {
                        pageBuilder.Append(sr.PageNum.ToString() + "&nbsp;");
                    }
                }
            }
            else
            {
                int startPage = sr.PageNum >= 6 ? sr.PageNum - 5 : 1;
                int endPage = sr.PageNum + 4 > sr.TotalPages ? sr.TotalPages : sr.PageNum + 4;
                if (endPage == sr.TotalPages)
                    startPage = endPage - 9;
                if (startPage == 1)
                    endPage = startPage + 9;
                for (int i = startPage; i <= endPage; i++)
                {
                    if (i != sr.PageNum)
                    {
                        url = GetUrl(szWordsAllContains, szExactPhraseContain, szOneOfWordsAtLeastContain, szWordNotInclude, views, i);
                        pageBuilder.Append("<a class=\"SmallTitle\"  href=\"" + url + "\" >" + i.ToString() + "</a>&nbsp;");
                    }
                    else
                    {
                        pageBuilder.Append(sr.PageNum.ToString() + "&nbsp;");
                    }
                }
            }
            if (sr.PageNum < sr.TotalPages)
            {
                url = GetUrl(szWordsAllContains, szExactPhraseContain, szOneOfWordsAtLeastContain, szWordNotInclude, views, sr.PageNum + 1);
                pageBuilder.Append("<a class=\"SmallTitle\"  href=\"" + url + "\" >下一页</a>");
            }
            tdPageSet.InnerHtml = pageBuilder.ToString();
            #endregion
        }
        catch (SocketException)
        {
            Response.Write("搜索服务没有运行!");
        }
        catch (Exception se)
        {
            Response.Write(se.StackTrace.ToString());
            return;
        }
    }