现在的位置: 首页 > 综合 > 正文

花小钱,办大事

2013年06月19日 ⁄ 综合 ⁄ 共 1451字 ⁄ 字号 评论关闭

http://syeerzy.netyi.net/blog/user1/16/archives/2005/8194.html

我的高中数学老师经常强调使用最方便的解题方法,他喜欢说“别人一块钱只能买一个鸡蛋,咱们要一块钱买两鸡蛋,有时候还多要杯豆浆,这就叫花小钱办大事。。”虽然豆浆鸡蛋算不得什么大事,但是我一直记着他的思想,花最小的代价,干最多事情。

偶见别人写的几个方法,其实简单修改一下,可以干更多事情。(方法本身已经被我简化处理过了,其实原方法远不是这样简单,为说明问题,修改去掉多余部分)

1。 public static void BindGrid(DataGrid dg,DataTable dt)
       {
                dg.DataSource = dt;
                dg.DataBind();
       }
2。 public static void BindDropDownList(DropDownList ddl,DataTable dt,string valuefield,string textfield)
{
        ddl.DataSource = dt;
        ddl.DataTextField = textfield;
       ddl.DataValueField = valuefield;
        ddl.DataBind();
}

3. public static void AddConfirm(Button b,string msg)
{
        b.Attributes.Add("onclick","return confirm(''"+msg+");");
}

 

大家对以上代码有什么感想???其实方法的内容几乎不用修改,只要简单修改一下参数的声明,比如第一个把DataGrid换成BaseDataList,那么方法除了有它现在绑定DataGrid的功能,同时也拥有了绑定DataList的功能,而方法内容完全不用修改。同理,第2个如果把DropDownList改成ListControl,那么除了拥有现在的绑定DropDownList的功能,同时也可以绑定ListBox,CheckBoxList,RadioButtonList等控件而完全不需要修改实现代码就提供了4倍的功能,第3个只能给Button(WebControl里的)加弹出确认,如果换成ImageButton,LinkButton就不行了,有人说换成WebControl,那么还是有HtmlControl里面的按钮实现不了,如果换成Control,类型倒是够广,可是不是所有Control都有Attributes属性的。。。其实这个方法只用到Attributes,只要找找这个属性在继承树上是哪里最先有的就可以了,可以找到一个接口 IAttributeAccessor,所有的HtmlControl和WebControl都实现了这个接口,这个接口带来了Attributes,所以只要把Button换成IAttributeAccessor为参数类型,里面稍微改一下把属性语法改为set语法:
public static void AddConfirm(IAttributeAccessor b,string msg)
{
        b.setAttribute("onclick","return confirm(''"+msg+");");
}

就可以适用所有需要的情况了。

处处留心注意,其实你的代码功能可以更强大。

抱歉!评论已关闭.