额,你这个问题我没有全部理解。我按照我理解的提供两条思路:
(1)你这个参数设置是长期的,也就是说是针对某个角色,某种行为,下次登录仍然要使用的设置。这种情况的话,一般情况下肯定是要保存到数据库中。无非就是增加一个保存该状态的字段。
(2)你这个参数是针对当期登录时间段是有效的,也就是说你退出系统后再重新登录就会失效。这种情况下,你可以使用Session来保存你的配置状态。假设这个状态为CheckState,你可以这样做:
_session.Add("CheckState","checked");//选中状态
_session.Add("CheckState","unchecked");//非选中状态
你可以在其他页面通过这种方式获取它的值:string checkstate=Session["CheckState"].ToString();
通过判断该值来决定是否使用该参数
using System;
using System.Collections.Generic;
using System.Text;
using SRBP;
using Eteam.Data;
using Eteam;
using System.Data;
using System.ComponentModel;
namespace CostPlugins
{
[Serializable]
public class ActionIsFillWarehouse:ItemAction
{
public ActionIsFillWarehouse()
{
this.Name = "是否必填收/发料仓库";
}
private string m_FFieldName = "";
[DisplayName("仓库字段名")]
public string FFieldName
{
get { return m_FFieldName; }
set { m_FFieldName = value; }
}
protected override void DoLoadFromXml(System.Xml.XmlNode child)
{
base.DoLoadFromXml(child);
if (child.Name == "FFieldName")
this.FFieldName = child.InnerText;
}
protected override void DoSaveToXml(System.Xml.XmlWriter xw)
{
base.DoSaveToXml(xw);
xw.WriteElementString("FFieldName", this.FFieldName);
}
public override void Execute()
{
string FOrgId = GlobalValue.Inst.CurUser.CurOrgId.ToString();
string sql = "select PARAMVALUE from dbo.ORGPARAMS where ORGID={0} and PARAMNAME= 'FIsFillWarehouse'";
sql = string.Format(sql,FOrgId);
object PAPAMValue = _db.ExecuteScalar(CommandType.Text, sql);
if (PAPAMValue != DBNull.Value && PAPAMValue.ToString() != "")
{
if (PAPAMValue.ToString() == "1")
{
int FWareHouseId = Convert.ToInt32(this.ItemEntity.GetPropValue(FFieldName));
if (FWareHouseId == -1)
throw new Exception("请填写仓库!");
}
}
}
private Database _db
{
get
{
return DatabaseFactory.CreateDatabase();
}
}
}
}