天天看点

花小钱,办大事

<a href="http://syeerzy.netyi.net/blog/user1/16/archives/2005/8194.html">http://syeerzy.netyi.net/blog/user1/16/archives/2005/8194.html</a>

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

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

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+");");

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

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