周五晚上加班的時候做一堆combobox直接的聯動,然後呢,這些cbo的datasource都是同乙個datatable,當時寫**的時候求快也就沒有太注意datatable的繫結,然後就出了一些小問題。
出問題前的**:
var dt = new datatable();
dt.columns.add();
dt.rows.add();
var cbos = new combobox ;
foreach (var cbo in cbos)
去介面操作這些cbo的時候你會發現cbo1選擇了第乙個選項的話,cbo2也會跟著自動選成第乙個選項。為什麼呢?因為這兩個cbo繫結的都是同乙個dt,當cbo1選擇dt中的第一行資料的時候,記憶體裡面自然也會反應cbo1的selectedvalue是dt的第一行,那麼繫結著相同dt的cbo2的selectedvalue自然也會跟著變成第乙個選項。
遇到這種情況,我們在給複數個cbo繫結相同資料來源的時候,就不要單純的直接把datatable給繫結上去,而是用乙個拷貝的datatable,就是cbo.datasource = dt.copy();,這樣兩個cbo繫結的資料來源就不在相同,它們兩個也不能互相影響了。
所以,在處理datatable的時候,加乙個copy()就是乙個很好的**習慣,就算不是處理控制項,簡簡單單的new乙個datatable,或者把sql取出來的datatable賦給我們自己new的datatable,最好都在後面加個copy(),因為一旦**多了起來,你會無法完全掌握在**new的這個datatable會需要變更,一旦在不經意間變更,那麼必然會影響到其它繫結這個datatable的地方。記得某一次前輩給我review**的時候就給我指出過來,當時也查過copy和clone的區別用法。然後在寫**的時候不經意又忘記了= =。。。
總結一下 IEnumerable 的例子
本篇將圍繞 試試 ienumerable 的 10 個小例子 和 試試 ienumerable 的另外 6 個小例子 給出的例子,總結一下對於ienumerable介面的一些使用方法,希望讀者能夠從中獲得一些啟發。這種遍歷通常分為兩種目的 遍歷和查詢。ienumerable及其泛型版本ienumer...
談一下多執行緒下的count
在單執行緒下,我們經常使用count 將count的值自增1,也不會發生什麼錯誤,但是在多執行緒下,可能使用count 結果可能就往往出乎我們的意料了.我們以count 一直從1加到5為例 public class threadcount extends thread override public...
舉個簡單的例子說一下java日誌檔案的配置資訊
舉個例子,日誌檔案的配置是這個樣得,如下 1.log4j.logger.inte ce info,inte ce logs inte ce inte ce.log yyyy mm dd org.apache.log4j.patternlayout d p c l m n 7.utf 8 9.解析一下...