using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using Utils; namespace SiteCore { public class WebBasePage:BasePage { public int PkID; //int主键值 protected string tmpId = ""; protected bool tmpExpire; protected string tmpState = ""; protected string fullScreen = "全屏查看"; #region 防重复刷新 private bool _refreshState; //是否是页面刷新 private bool _isRefresh; public bool IsRefresh { get { return _isRefresh; } } protected override void OnInit(EventArgs e) { base.OnInit(e); if (Context.Session["__ISREFRESH"] == null) Context.Session["__ISREFRESH"] = false; } protected override void LoadViewState(object savedState) { object[] allStates = (object[])savedState; base.LoadViewState(allStates[0]); _refreshState = (bool)allStates[1]; _isRefresh = _refreshState == (bool)Session["__ISREFRESH"]; } protected override object SaveViewState() { Session["__ISREFRESH"] = _refreshState; object[] allStates = new object[2]; allStates[0] = base.SaveViewState(); allStates[1] = !_refreshState; return allStates; } #endregion protected bool IsReport { get; set; } protected bool IsFullScreen { get; set; } #region 页面私有方法 /// /// 检测是否登录 /// public bool CheckRights() { string sPath=CommonHelper.GetPrePath(); string curUrl = HttpContext.Current.Request.Url.AbsolutePath; if (CurrentUser == null) { Response.Write(""); Response.End(); return false; } else if (CurrentUser.MerchantID < 1)//是会员登录状态 { if (curUrl.IndexOf("/MerchantCenter", StringComparison.OrdinalIgnoreCase) != -1)//如果是会员访问商家页面则退出 { Response.Write(""); Response.End(); return false; } } else if (CurrentUser.MerchantID >0)// { if (curUrl.IndexOf("/UserCenter", StringComparison.OrdinalIgnoreCase) != -1)//如果是会员访问商家页面则退出 { Response.Write(""); Response.End(); return false; } } else { ShowTabPage(); } return true; } /// /// 显示通用错误 /// public void ShowCustomError() { ShowMsg("提示", "系统繁忙或发生错误!"); } /// /// 显示全屏查看 /// /// public bool ShowFullScreen() { if (!UrlParmsCheck("fs")) { string str = "(全屏查看)"; string script = string.Format("$(\"" + str.Replace("\"", "") + "\").appendTo($(\".title\"))"); AddScript(script); return true; } else { IsFullScreen = true; return false; } } public void ShowTabPage() { if (UrlParmsCheck("it"))//如果是tab页中转的 { string script = string.Format("$(\".title\").hide()"); AddScript(script); } } #endregion #region 页面事件 protected override void OnPreLoad(EventArgs e) { if (UrlParmsCheck("isReport"))IsReport = true; if (Page.IsPostBack) { if (EnableViewState) { if (ViewState["ID"] != null) PkID = Convert.ToInt32(ViewState["ID"]); } } base.OnPreLoad(e); } protected override void OnPreRender(EventArgs e) { if(EnableViewState)ViewState["ID"] = PkID; if (WaitShowScript.Count > 0) Page.ClientScript.RegisterStartupScript(GetType(), "alt", ""); base.OnPreRender(e); } private readonly List _waitShowScript=new List(); public List WaitShowScript { get { return _waitShowScript; } set { WaitShowScript = value;} } /// /// 添加运行脚本 /// /// public void AddScript(string func) { _waitShowScript.Add(func.TrimEnd(';')); //Page.ClientScript.RegisterStartupScript(GetType(), "alt", ""); } #endregion #region 设置查询条件 protected void KeyWhere(string field,string value,IList where) { value = value.Trim(); if(value!="") { string[] sArr = field.Split(','); StringBuilder str=new StringBuilder(); for (int i = 0; i < sArr.Length;i++ ) { str.Append(string.Format(" {1} like '%{0}%' or", value, sArr[i])); } where.Add(" ("+str.ToString().TrimEnd("or".ToCharArray())+") "); } } protected void EqualsWhere(string field, string value, IList where) { if(value!="") { where.Add(string.Format(" {1}={0}",value,field)); } } protected void StartEndDateWhere(string s_field,string e_field,string start, string end, IList where) { if (start != "" || end != "") { if (start != "" && end != "") where.Add(string.Format(" {2}>='{0}' and {3}<='{1}'", start, end, s_field,e_field)); else if (start != "") where.Add(string.Format(" {1}>='{0}'", start, s_field)); else where.Add(string.Format(" {1}<='{0}'", end, e_field)); } } protected void BetweenStringWhere(string field,string start,string end,IList where) { if (start != "" || end != "") { if (start != "" && end != "") where.Add(string.Format(" {2} BetWeen '{0}' and '{1}'", start, end, field)); else if (start != "") where.Add(string.Format(" {1}>='{0}'", start, field)); else where.Add(string.Format(" {1}<='{0}'", end, field)); } } protected void BetweenIntWhere(string field, string start, string end, IList where) { if (start != "" || end != "") { if (start != "" && end != "") where.Add(string.Format(" {2} BetWeen {0} and {1}", start, end, field)); else if (start != "") where.Add(string.Format(" {1}>={0}", start, field)); else where.Add(string.Format(" {1}<={0}", end, field)); } } #endregion #region GridView数据处理 /// /// 过期 /// /// /// protected bool GetIsExpire(object endTime) { if (endTime != null && endTime.ToString() != "" && Convert.ToDateTime(endTime).AddDays(1) <= DateTime.Now) return true; return false; } /// /// 发布 /// /// /// /// /// /// protected string GetPublishString(bool expire, object pubstate, string sId,string pType) { if (expire) return "发布"; else { if (pubstate.ToString() == "1") return string.Format("下架", pType,sId); else return string.Format("发布", pType, sId); } } /// /// 删除 /// /// /// /// /// protected string GetDelString(bool expire, string sId, string pType) { if (expire)//过期允许删除 return "删除"; else return "删除"; } /// /// 编辑 /// /// /// /// protected string GetEditString(bool expire, string sId) { if (expire) return "编辑"; else return "编辑"; } protected string GetEditString(bool expire, string sId,string url) { if (expire) return "编辑"; else return "编辑"; } /// /// 转赠好友 /// /// /// /// /// /// protected string GetUserGiveString(bool expire,string sId,object num,object usedNum) { if (expire || Convert.ToInt32(GetMinuteNum(num,usedNum))<1) return "转赠好友"; else return "转赠好友"; } /// /// 状态显示 /// /// /// public string GetStateString(bool expire,object state) { if (state.ToString() == "") return ""; if (expire) return "己过期"; int si = Convert.ToInt32(state); switch (si) { case 1:return "己发布"; default: return "未发布"; } } /// /// 获取分隔后数组中的某项 /// /// /// /// public string GetSplitString(object result, int idx) { if (result.ToString() == "") return ""; string[] arr = result.ToString().Split(','); if (arr.Length > idx) return arr[idx]; return ""; } #endregion #region GridView 绑定 public void SetGridBind(string sqltable, GridView gridView, DataStruct dStruct) { DataTable dt = WebCache.GetData(sqltable, dStruct); GridViewBind(gridView, dt, dStruct.EmptyMessage); } public void SetReportGridBind(string sqltable, GridView gridView, DataStruct dStruct) { DataTable dt; if (IsReport) { string sWhere = SecurityHelper.UrlDecoding(GetString("sw")); if (sWhere != "") { dStruct.MainWhere = sWhere.Split('μ')[0]; dStruct.SecondWhere = sWhere.Split('μ')[1]; } dt = WebCache.GetFullData(sqltable,dStruct); } else { if (IsReport) { HiddenField hidden = new HiddenField(); hidden.ID = "hReport"; //加密条件放至隐藏控件 hidden.Value = SecurityHelper.UrlEncoding(dStruct.MainWhere + "μ" + dStruct.SecondWhere); Page.Form.Controls.AddAt(0, hidden); } dt = WebCache.GetData(sqltable,dStruct); } GridViewBind(gridView, dt, dStruct.EmptyMessage); if (IsReport) { Page.EnableViewState = false; StringWriter oStringWriter = new StringWriter(); HtmlTextWriter oHtmlTextWriter = new HtmlTextWriter(oStringWriter); Page.RenderControl(oHtmlTextWriter); WebHelper.ExportGridView(this.Title, oStringWriter.ToString()); } } public void SetSimpleGridBind(string sqltable, GridView gridView, DataStruct dStruct) { dStruct.SecondWhere = SecondWhere; DataTable dt = WebCache.GetData(sqltable, dStruct); GridViewBind(gridView, dt, dStruct.EmptyMessage); } public void GridViewBind(GridView gridView,DataTable dt) { GridViewBind(gridView, dt, "当前没有记录"); } public void GridViewBind(GridView gridView, DataTable dt, string emptyMsg) { if (dt!=null && dt.Rows.Count < 1) { dt.Rows.Add(dt.NewRow()); gridView.DataSource = dt; gridView.DataBind(); int columnCount = gridView.Rows[0].Cells.Count; gridView.Rows[0].Cells.Clear(); gridView.Rows[0].Cells.Add(new TableCell()); gridView.Rows[0].Cells[0].CssClass = "GridEmptyDataRowStyle"; gridView.Rows[0].Cells[0].ColumnSpan = columnCount; gridView.Rows[0].Cells[0].Text = emptyMsg; gridView.RowStyle.HorizontalAlign = HorizontalAlign.Center; } else { gridView.DataSource = dt; gridView.DataBind(); } } #endregion #region 获取编辑页面URL参数 private string _lcPara; /// /// URL参数 lcPara=xx,1,yy,2 /// private string GetLcPara(string key) { if (string.IsNullOrEmpty(_lcPara)) { _lcPara = Request.QueryString[key]; } return _lcPara; } /// /// 获取默认主键 /// /// public string GetPk() { return GetPara("LcID"); } /// /// 获取自定义url参数 /// /// 参数名 /// public string GetPara(string key) { //LCPara=PkID,1,sName,sk string lcPara = GetLcPara("LcPara"); if (!string.IsNullOrEmpty(lcPara)) { lcPara = lcPara.Replace("#", ""); string[] sArr = lcPara.Split(','); for (int i = 0; i < sArr.Length; i++) { if (i % 2 != 0) continue; if (sArr[i].ToLower().Equals(key.ToLower())) return sArr[i + 1]; } } return ""; } #endregion } }