private void grdSearchResults_SortCommand(object source, System.Web.UI.WebControls.DataGridSortCommandEventArgs e) { string attrFilterDef = (string)ViewState["AttributesFilter"]; string contextFilterDef = (string)ViewState["ContextFilter"]; int recStart = grdSearchResults.CurrentPageIndex * grdSearchResults.PageSize; int recNumber = grdSearchResults.PageSize; string orderByAttribute = e.SortExpression; ViewState["OrderByAttribute"] = e.SortExpression; OrderByAttribute = e.SortExpression; DocLinkUrl_Begin = (string) ViewState["DocLinkUrl_Begin"]; DocLinkUrl_End = (string) ViewState["DocLinkUrl_End"]; try { DocSearch search = new DocSearch(); if(search.Find(attrFilterDef.ToString(), contextFilterDef, orderByAttribute, recStart, recNumber)) { //grdSearchResults.CurrentPageIndex = e.NewPageIndex; grdSearchResults.DataSource = search.ResultSet; grdSearchResults.VirtualItemCount = search.VirtualCount; grdSearchResults.DataBind(); grdSearchResults.Visible = true; } else grdSearchResults.Visible = false; UpdateResultInfo(search); } catch(Exception ex) { ProcessException(ex); } }
public void InitSearch() { try { ArrayList attrFilters = new ArrayList(); attrFilters.Add(DocSearch.FilterDateRange("DateReceived", DateReceived_From, DateReceived_To)); attrFilters.Add(DocSearch.FilterDateRange("DocumentDate", DocumentDate_From, DocumentDate_To)); attrFilters.Add(DocSearch.FilterDateRange("CreationTime", CreationTime_From, CreationTime_To)); attrFilters.Add(DocSearch.FilterStringEquals("Id", Id)); attrFilters.Add(DocSearch.FilterString("IncomingNumber", IncomingNumber)); attrFilters.Add(DocSearch.FilterString("OutgoingNumber", OutgoingNumber)); attrFilters.Add(DocSearch.FilterString("Subject", Subject)); attrFilters.Add(DocSearch.FilterString("Header", Header)); attrFilters.Add(DocSearch.FilterString("D.FileName", FileName)); attrFilters.Add(DocSearch.FilterString("ArchiveFileNames", ArchiveFileNames)); attrFilters.Add(DocSearch.FilterEnumeration("DocTypeId", DocTypeId_Enum)); attrFilters.Add(DocSearch.FilterEnumeration("DocSourceId", DocSourceId_Enum)); attrFilters.Add(DocSearch.FilterEnumeration("DocCategoryId", DocCategoryId_Enum)); if(IsRead != null && IsRead.Length >0) attrFilters.Add(DocSearch.FilterIsRead( IsRead == "1")); if(IsFavorite != null && IsFavorite.Length >0) attrFilters.Add(DocSearch.FilterIsFavorite( IsFavorite == "1")); StringBuilder attrFilterDef = new StringBuilder(); foreach(string flt in attrFilters) { if(flt == null || flt.Length == 0) continue; if(attrFilterDef.Length != 0) attrFilterDef.Append(" AND "); attrFilterDef.Append(flt); } //if(ContextQuery != null && ContextQuery.Trim().Length >0) // ContextQuery = ContextQuery + " zmqpxnowcbievruytalskdjfhgxs"; // well, this is the only solution filter IDX IGNORED WORDS exception // unfortunately it's impossible to identify this error String contextFilterDef = DocSearch.FilterContext(ContextQuery); ViewState["AttributesFilter"] = attrFilterDef.ToString(); ViewState["ContextFilter"] = contextFilterDef.ToString(); ViewState["OrderByAttribute"] = OrderByAttribute; ViewState["DocLinkUrl_Begin"] = DocLinkUrl_Begin; ViewState["DocLinkUrl_End"] = DocLinkUrl_End; DocSearch search = new DocSearch(); if(search.Find(attrFilterDef.ToString(), contextFilterDef, OrderByAttribute, 0, PageSize)) { grdSearchResults.DataSource = search.ResultSet; grdSearchResults.PageSize = PageSize; //grdSearchResults.CurrentPageIndex = 0; grdSearchResults.VirtualItemCount = search.VirtualCount; grdSearchResults.DataBind(); grdSearchResults.Visible = true; } else grdSearchResults.Visible = false; UpdateResultInfo(search); } catch(Exception ex) { ProcessException(ex); } }