当一个页面里有大量的按钮(最少10+),而且用户的每个操作会导致不同的按钮被启用,同时以前被启用的按钮可能随着这个操作又禁用了.
每当遇到这样的页面就头大.我现在的方法很笨,对每个事件都编写一整串的按钮状态操作代码,这样的坏处就是,每当一个页面多出几个按钮或者要删掉几个按钮,我就得到处改代码,感觉时间很大部分都浪费在这上面.
现在请教下高手有没有什么好的设计模式能用在我这情况上的,也欢迎大家讨论
每当遇到这样的页面就头大.我现在的方法很笨,对每个事件都编写一整串的按钮状态操作代码,这样的坏处就是,每当一个页面多出几个按钮或者要删掉几个按钮,我就得到处改代码,感觉时间很大部分都浪费在这上面.
现在请教下高手有没有什么好的设计模式能用在我这情况上的,也欢迎大家讨论
解决方案 »
- 这段代码有究竟搞什么用的?
- 分页的gridview如何整个导出到excel?
- serialport控件的问题?
- 我没分了,可是我我真的着急用这个答案,谢谢大家了。。。。。。
- 为什么FormsAuthentication.GetRedirectUrl的抛出异常?
- 请教高手:GridView分页与SqlDataSource之间的关系。
- 救命啊,100分求教大虾们,在SQL sever2000里有这样一个表结构,要建一个提交表单,表结构里的字段可以通过表单提交,最好能实现修改、删
- 为什么from表单下面会自动生成两行div呢,aspx里面根本没有这两行的,在浏览器查看代码就出现了
- $ajax加载数据问题
- MVC无法找到资源
- 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的事件中只要处理对应的业务逻辑,修改状态后会自动反映到界面按钮上去