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
}
}