天天看點

花小錢,辦大事

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

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

處處留心注意,其實你的代碼功能可以更強大。