}//end linq server mode /// <summary> /// derive filter from selected row and apply to cargo update editor - find by selected order id /// rebuild session with selected filter /// redirect to orders search page /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void dxgrdquerylog_RowCommand(object sender, ASPxGridViewRowCommandEventArgs e) { try { Int32 _idx = e.VisibleIndex; //string[] _fields = {"qry_text","qry_desc"}; string _orderid = this.dxgrdquerylog.GetRowValues(_idx, "orderid").ToString(); if (!string.IsNullOrEmpty(_orderid)) { SessionParameterPasser _sessionWrapper = new SessionParameterPasser("~/Ord_Edit_Cargo.aspx"); _sessionWrapper["query"] = "orderid==" + _orderid; _sessionWrapper["name"] = "query_order_id"; _sessionWrapper["mode"] = "0"; _sessionWrapper.PassParameters(); //force submit of query and set mode to 0 (history) //this does not work! //Page.ClientScript.RegisterStartupScript(GetType(), "QRY_MOD", "window.submit_query(0);", true); //Response.Redirect("~/Default.aspx",false); } } catch (Exception ex) { Response.Write(ex.Message.ToString()); } }
//end button save /// <summary> /// reset search /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnEndFilter_Click(object sender, EventArgs e) { this.txtQuickSearch.Text = ""; this.dxhfsource.Set("mode", 1); //default to quick search SessionParameterPasser _sessionWrapper = new SessionParameterPasser(); _sessionWrapper["mode"] = null; _sessionWrapper["query"] = null; _sessionWrapper["name"] = null; this.dxgdvOrder.DataBind(); }
/// <summary> /// this version of redirect just forces the login to close /// </summary> protected void Redirect(bool loggedIn) { try { if (loggedIn) { UserClass _thisuser = (UserClass)Session["user"]; //this.txtUserName.Text = _thisuser.UserName; //save login history append_to_user_log(_thisuser); //290311 REQUIRED FOR FORMS AUTHENTICATION //30/03/2011 for forms authentication //System.Web.Security.FormsAuthentication.SetAuthCookie(txtUserName.Text, false); //show logout //ClientScript.RegisterStartupScript(GetType(), "LOG_KEY", "window.parent.loginSwitch();", true); // //09/03/2011 reset submit_query -1 which should cause default filter to fire therefore not auto-loading data //27/06/2011 don't fire this script for ubmit_query(-1) as it means we can only use this login form with search forms e.g. ord_view_tracking.aspx //set session wrapper instead SessionParameterPasser _sessionWrapper = new SessionParameterPasser(); _sessionWrapper["mode"] = "-1"; //ClientScript.RegisterStartupScript(GetType(), "CLR_KEY", "window.parent.submit_query(-1);", true); //pass user name back to parent ClientScript.RegisterStartupScript(GetType(), "LBL_KEY", "window.parent.lblResult.SetText(txtResult.GetText());", true); //09/08/2011 re-initialise menu ClientScript.RegisterStartupScript(GetType(), "LBL_MNU", "window.parent.setMenu();", true); //close login ClientScript.RegisterStartupScript(GetType(), "INN_KEY", "window.parent.closeloginWindow(1);", true); } else { //close this window and redirect to default non-secure page //29/06/2011 don't use script as we are going to redirect anyway ClientScript.RegisterStartupScript(GetType(), "OUT_KEY", "window.parent.cancelloginWindow();", true); //force popup to close } } catch (Exception ex) { this.lblmsg.Text = ex.Message.ToString(); } }
}//end linq server mode /// <summary> /// derive filter from selected row and apply to orders view /// rebuild session with selected filter /// redirect to orders search page /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void dxgrdquerylog_RowCommand(object sender, ASPxGridViewRowCommandEventArgs e) { try { Int32 _idx = e.VisibleIndex; //string[] _fields = {"qry_text","qry_desc"}; string _fex = this.dxgrdquerylog.GetRowValues(_idx, "qry_text").ToString(); string _fname = this.dxgrdquerylog.GetRowValues(_idx, "qry_desc").ToString(); string _fsource = this.dxgrdquerylog.GetRowValues(_idx, "qry_source").ToString(); string _default = "shipment";//default to shipment tracking string _url = "../tracking/{0}_tracking.aspx"; _url = _fsource != "" ? string.Format(_url, _fsource): string.Format(_url, _default); //old code we are using form names instead of codes in qry_source as of 20/03/15 //if (_fsource == "CNTR") { // _url = "../tracking/container_tracking.aspx"; //} //else if(_fsource == "DLVRY"){ // _url = "../tracking/delivery_tracking.aspx"; //} //else if(_fsource == "NSHIP"){ // _url = "../tracking/not_shipped_tracking.aspx"; //} if (!string.IsNullOrEmpty(_fex)) { SessionParameterPasser _sessionWrapper = new SessionParameterPasser(_url); _sessionWrapper["query"] = _fex; _sessionWrapper["name"] = _fname; _sessionWrapper["mode"] = "0"; _sessionWrapper["source"] = _fsource; _sessionWrapper.PassParameters(); //force submit of query and set mode to 0 (history) //this does not work! //Page.ClientScript.RegisterStartupScript(GetType(), "QRY_MOD", "window.submit_query(0);", true); //Response.Redirect("~/Default.aspx",false); } } catch (Exception ex) { Response.Write(ex.Message.ToString()); } }
/// <summary> /// clear grid of all data, filters and groups /// clear session wrappers so previus search params are not retained /// </summary> protected void Session_Reset_All() { //remove all filtering/grouping from grid ASPxGridView _grid = (ASPxGridView)this.ContentPlaceHolderM1.FindControl("gridOrder"); if (_grid != null) { _grid.FilterExpression = null; wwi_func.remove_dxgrid_grouping(_grid); } //Session["user"] = null; Session.Remove("user"); Session.Clear(); SessionParameterPasser _sessionWrapper = new SessionParameterPasser(); _sessionWrapper["query"] = "(OrderNumber==-1)"; _sessionWrapper["name"] = null; _sessionWrapper["mode"] = null; this.lblResult.Text = "You are not signed in"; this.btnLogout.ClientVisible = false; this.btnLogin.ClientVisible = true; //kill cookie if (Request.Browser.Cookies) { if (Request.Cookies["UserInfo"] != null) { HttpCookie _acookie = new HttpCookie("UserInfo"); _acookie.Expires = DateTime.Now.AddDays(-1d); Response.Cookies.Add(_acookie); } } //end kill cookie }
/// <param name="sender"></param> /// <param name="e"></param> protected void btnApply_Click(object sender, EventArgs e) { //01122011 PME if user has created a query string but datatable is empty i.e. they did not click the + button to add to datatable //populate datatable with query row DataTable _dt = (DataTable)Session["querytable"]; if (_dt.Rows.Count == 0) //force check to see whats in input boxes { datatable_add_row(); } //string _magic = "\""; //set up quotes correctly in string //this.txtQueryResult.Text = this.advancedFilter.FilterExpression.Replace("#", _magic).ToString(); //this.advancedFilter.FilterExpression.ToString(); //System.Collections.Hashtable _htfilter = new System.Collections.Hashtable(); // //12/10/2010 new search builder does not require parsing for Linq string _fex = get_query_from_rows(); //this.advancedFilter.GetFilterExpressionForOracle().ToString(); //24/06/2011 for date in next/previous X days, parse out the current dates and replace with markers //so we can re-use the query //24/06/2011 if add to reports is ticked, flag in database so we can add to drop down on search form string _ck = this.dxckReport.Checked == true ? "___report" : ""; string _fname = get_query_name() + _ck; //force advanced search session to clear //09/06/2011 do not clear session so user can re-apply //Session.Remove("querytable"); if (_fex != string.Empty) { //12/10/2010 new search builder does not require parsing for Linq, as the string //is formatted depending on the linq attribute in xml //we just need to build the query from data rows in repeater // //_fex = set_string_parser(_fex); // //if (_fex.Contains("#")) //{ // _fex = set_datetime_parser(_fex); //} SessionParameterPasser _sessionWrapper = new SessionParameterPasser(); _sessionWrapper["query"] = _fex; _sessionWrapper["name"] = _fname; this.txtQueryResult.Text = _fname; //pass search params back to parent //ClientScript.RegisterStartupScript(GetType(), "QRY_KEY", "window.parent.lblmsgbox.SetText(txtQuery.GetText());", true); //close this window //ClientScript.RegisterStartupScript(GetType(), "ANY_KEY", "window.parent.closefilterWindow();", true); //force reload of primary grid //ClientScript.RegisterStartupScript(GetType(), "DAT_KEY", "window.parent.grdOrder.PerformCallback();", true); //all one script //one script this.ClientScript.RegisterStartupScript(GetType(), "QRY_KEY", "window.parent.lblmsgbox.SetText(txtQuery.GetText());window.parent.popDefault.HideWindow(window.parent.popDefault.GetWindowByName('filterform'));window.parent.submit_query(2);", true); } else { //just close popup //Session.Remove("querytable"); ClientScript.RegisterStartupScript(GetType(), "EXT_KEY", "window.parent.popDefault.HideWindow(window.parent.popDefault.GetWindowByName('filterform'));", true); } }
//end load #region grid databinding /// <summary> /// this code is used with LinqServerModeDataSource_Selecting so we can run in server mode /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void LinqServerModePod_Selecting(object sender, DevExpress.Data.Linq.LinqServerModeDataSourceSelectEventArgs e) { Int32 _companyid = -1; //after testing default to empty string SessionParameterPasser _sessionWrapper = new SessionParameterPasser(); ParameterCollection _params = new ParameterCollection(); //check if session created from advanced search, in which case we can use the parameters passed back string _query = ""; int _mode = this.dxhfsource.Contains("mode") ? wwi_func.vint(this.dxhfsource["mode"].ToString()) : 1; //default mode to quick search //a simplified version of the methods used in order tracking - no history but advanced search is available if (_sessionWrapper["query"] != null && _mode == 2) { _query = _sessionWrapper["query"].ToString(); } else { _query = get_filter(); } //company id: always add as a search param if user is logged in //if (Page.Session["user"] != null) //company id: always add as a search param if user is logged in UNLESS _mode = -1 which we can use to bypass params if (Page.Session["user"] != null) { _companyid = (Int32)((UserClass)Page.Session["user"]).CompanyId; if (_companyid != -1) //-1 is a WWI company { Parameter _p = return_default_view(-1); if (_p != null) { _params.Add(_p); } } } //now rebuild query with additional parameters string _f = ""; if (_params.Count > 0) { foreach (Parameter p in _params) { string _a = _f != "" ? " AND " : ""; _f += _a + "(" + p.Name.ToString() + "==" + p.DefaultValue.ToString() + ")"; } if (_query != "") { _query = _f + " AND " + _query; } else { _query = _f; } } //get start date from dll value //e.g if search is for last 12 months dllvalue 1 start date = current date - (1 * 12) months //if search is for 2-3 years dllvalue 3 start date = current date - (3 * 12) months int _dllvalue = this.dxcboRange.Value != null?wwi_func.vint(this.dxcboRange.Value.ToString()) : 1; //number of months to include after start date int _months = 12; //multiply base * 12 to get start date int _lowest = 0 - (_dllvalue * 12); DateTime _minDate = DateTime.Now.AddMonths(_lowest); //dynamic queries using system.Linq.dynamic + Dynamic.cs library //20/10/2010 we have build a unqiue index (OrderIx) from OrderId, TitleId, ContainerSubId as usual primary keys are not going to //be unique in the view. aspxgrid only works properly when it has a unique key e.KeyExpression = "OrderIx"; //"OrderID"; //a key expression is required if (!string.IsNullOrEmpty(_query)) { //var _nquery = new linq_classesDataContext().view_orders.Where(_query); //c => c.CompanyID == 7 var _nquery = new linq.linq_view_orders_udfDataContext().view_orders_by_age(_minDate, _months).Where(_query); //c => c.CompanyID == 7 e.QueryableSource = _nquery; //Int32 _count = _nquery.Count(); } else //default to display nothing in grid { //var _nquery = new linq_classesDataContext().view_orders.Where(c => c.OrderNumber == -1); var _nquery = new linq.linq_view_orders_udfDataContext().view_orders_by_age(_minDate, _months).Where(c => c.OrderNumber == -1); //_count = _nquery.Count(); e.QueryableSource = _nquery; } }