於是想說除了 DataView 以外,是否還支援其他類型?
首先來看一下 DataSource 始祖 BaseDataBoundControl.DataSource 定義
「設定 DataSource 屬性後,會呼叫 ValidateDataSource 方法。此外,如果資料繫結控制項已初始化,則會呼叫 OnDataPropertyChanged 方法,將 RequiresDataBinding 屬性設定為 true。」
似乎沒講到 object 可支援的類型
再來看一下上述的句子中所提到的 ValidateDataSource 定義
「要驗證的物件。通常是 IEnumerable、IListSource、IDataSource 或 IHierarchicalDatasource 的執行個體。」
這邊很明確的指出 DataSource 應該會支援以上四種泛型資料
ok~實驗開始
先在畫面上放個擁有 DataSource 屬性的 WebControl (這邊是放ListBox)再放上兩個觸發事件的 Button
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg8rmXw1GdsiCgcky7ZPHMuR7YXaGhHjHIo_IIpUOwLg3i45_28jX2yYUellbGOtAElNCIr9FGkkFT67pmzjj4B0moev9_pjfqu8iJSS6VbnjESehdgHWecQZBZrhp4y7nL2YkxW99hpQDw/s400/datasrc1.png)
第一個 Button 事件,寫下呼叫 System.IO.Directory.GetFiles 方法
製造一個 String Array,再將 Array 傳給 ListBox1.DataSource
第二個 Button 事件則是傳入一個字串給 ListBox1
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgdrKCpARsFCQcTPq124m7pJOrx2RrfKOzHp0iz7WGA7lzkIg8sUVWEz5RL67AAPyDJWuEr-roauKybfWhAJLZ8gkgsHX79Ktqi6s6U5LCbSU8KAVXxeJbiW-zgHrcGZ2wzpRZT0-B25-p9/s400/datasrc2.png)
DataSource 來源為 String Array,恩~可以做 DataBind
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoXtBBVRQStDPFanmY5TU5FC2awSShxqyCVFKHOPjE1HKkWt0IVcfRoPx0__fibIbQ1Ss-N_REqFakGbuoKjhZiYZKJ2HyV_Eh8BvHQTqqZ861E4tcf4WZjI0cmxkS6Fpbtf05CReQStr5/s400/datasrc3.png)
但當來源為字串時,非但沒有出錯
還將 hello world 切成 array來顯示!!! (據測試,應為 CharArray )
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPJykr5ZGK8l8w8BndWD9GhBSkaAjsgutWOaRxSHEj1Or9pr1QvCCv4i7lv1Sb9xkN8xcXZoIlyD_RVI_gedujqVK-iYFkM_5TDA6AnH-uG33xEH_4vPDBztUM1D1jrXFuEiTYIyo2tbXe/s400/datasrc4.png)
看來 .NET 會自動的將字串轉為 CharArray 再進行 DataBind 的動作
坎尼再用 Gridview 來看一下繫結的欄位是啥~ 疑~ Item?
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxejiyKhCTLMVcx60HP_ftB2xvmJ6FNj4YEsOHLAdjWeaapeeAHKvgH847R-zxkd-ZZ0ku-ivaVQUzFnJALX5KwBvbh5tCicmkhYZ7dIl29gaDM99u4sfxf9urjsBpVVOXeFQvUAN8Ieu2/s400/datasrc5.png)
可是當坎尼自己建立個欄位,並將 DataField 設為 Item 時
此時反倒是出現錯誤:「找不到欄位 Item」(還真是令人搞不懂
不過坎尼此時也發覺到,雖然 DataSource 有這些特性
平常 Coding 用到的機率少之又少,於是就此打住
會用到的作法大概就是列出清單之類的 (如範例中的檔案清單
沒有留言:
張貼留言