2012年3月20日 星期二

超好用又超難用的 BindingSource

BindingSource 好用的地方 在於查詢完 結果丟進去 什麼鬼控制項都能跟他Binding一起 又有好用的position讓你上上下下

但是當你想要效仿datagridview從中抓ColumnName啦 抓Row啦 抓Items啦之類的東東之時 你會發現

但是本人就是想這麼幹,BindingSource丟給datagridview它讀的懂,自然沒道理無法直接拆解來用

使出第一百零一招 請出好朋友估狗 未果 查到的不是火星文 就是沒關係的東東

只好亂打嘗試錯誤法 + 偵錯

偵錯的結果果然有法子在某個地方找到想要的東東

上圖是誤導的 沒藏那麼深 -.-

解答是被包裝成DataView 先轉型在從中foreach即可

4 則留言:

  1. 方便提供Source Code嗎? 謝謝!!

    回覆刪除
  2. 年代久遠 Source Code 已不可考
    基本上就是 BindingSource.List 屬性 其型別為 IList
    將其轉型為 DataView 即可取得 ColumnName 等屬性

    http://msdn.microsoft.com/zh-tw/library/system.windows.forms.bindingsource.list(v=vs.110).aspx
    http://msdn.microsoft.com/zh-tw/library/system.data.dataview(v=vs.110).aspx

    回覆刪除
  3. 謝謝回答!!看到您設計介面蠻不錯的
    剛好要編輯多個資料表,
    請說能不能從Datagridview資料直接寫入資料庫
    用linq的方式是可以,但是插入資料的話 還是要指定欄位名稱
    用sql的方式SqlCommandBuilder 是快速,好像沒辦法用linq的方式指定connstring

    回覆刪除
  4. 這是以前的學生作品 現在我也沒什麼在寫 Windows Form 了
    當時沒什麼物件導向的概念 所以直接想從 BindingSource.List 裡面取得 Data
    現在的話通常都會把資料層切出來 再讓控制項對資料層做存取
    至於要用 linq 還是 sql 其實都可以
    資料層有切割出來的話 就只是實作上的差異 不影響功能

    回覆刪除