当一个页面里有大量的按钮(最少10+),而且用户的每个操作会导致不同的按钮被启用,同时以前被启用的按钮可能随着这个操作又禁用了.
每当遇到这样的页面就头大.我现在的方法很笨,对每个事件都编写一整串的按钮状态操作代码,这样的坏处就是,每当一个页面多出几个按钮或者要删掉几个按钮,我就得到处改代码,感觉时间很大部分都浪费在这上面.
现在请教下高手有没有什么好的设计模式能用在我这情况上的,也欢迎大家讨论
每当遇到这样的页面就头大.我现在的方法很笨,对每个事件都编写一整串的按钮状态操作代码,这样的坏处就是,每当一个页面多出几个按钮或者要删掉几个按钮,我就得到处改代码,感觉时间很大部分都浪费在这上面.
现在请教下高手有没有什么好的设计模式能用在我这情况上的,也欢迎大家讨论
解决方案 »
- include_me 这帐号的密码我给忘了,谁能给我找回来。。
- 同样一个事件,为什么一个可以实现,另外一个不行??高手指点
- 请问在VS的VB代码文件中如何定义表格的位置
- 如何调用JS函数,在web层实现 鼠标滑过imgbutton实现 img变成本地的附加的图片
- asp.net中一readline()问题!
- 如何把布尔型的数据添加到数据库中?
- 关于在一个项目中调用公共类里的方法的一个小小的疑问?
- 急求用aSP.NET做的bbs~~!!在线等~!!
- 交友网站经常提示×××正在浏览您的资料 是怎么实现的?
- asp.net根据listbox数据库查询数据,十万火急!!1
- csdn
- GridView中某一列被隐藏显示,它的文本内容如何获取呢
其实核心的指导思想就是:“同样的事情不要重复做n遍”;
2、如果就事论事,以下代码仅供参考: /// <summary>
/// 设置按钮状态
/// </summary>
/// <param name="pStatus">0:不可见;1:不可用;2:可用</param>
/// <param name="pControlId">按钮Id</param>
private void SetButtonStatus(int pStatus,string pControlId)
{
int _Status = pStatus; //校验参数,代码略
if(_Status < 0 || _Status > 2)
{
throw new Exception("参数pStatus错误,0:不可见;1:不可用;2:可用.");
}
string _ControlId = pControlId; //校验参数,代码略
Control _ctr = this.FindControl(_ControlId);
if (_ctr == null)
{
throw new Exception("参数pControlId错误,控件不存在.");
} Button _btn = (Button)_ctr;
_btn.Visible = (_Status > 0);
_btn.Enabled = (_Status == 2);
}
<asp:Button runat="server" Text="加红" Enabled='<%# MyState.HP<100% %>' />
<asp:Button runat="server" Text="加蓝" Enabled='<%# MyState.MP<100% %>' />
<asp:Button runat="server" Text="打怪" Enabled='<%# FindNearby("怪")>0 && 状态!="采集" />
<asp:Button runat="server" Text="采集" Enabled='<%# FindNearby("物品")>0 && 状态!="战斗" />这样在button的事件中只要处理对应的业务逻辑,修改状态后会自动反映到界面按钮上去