假設有一 ListBox 繫結資料後如下:
------------------------------
- Id -- Name
------------------------------
- 1 -- John
- 2 -- Mary
- 3 -- Cook
- 4 -- COLA
------------------------------
其中第 2 筆資料,〝Mary〞被選中了。
這時若以 ListBox.Value 來取值的話,將只能夠取得 [Id] 欄位的值〝2〞,而沒辦法得知 [Name] 欄位的值!因為當初拉 ListBox 控制項時,就已經指定返回選取值的欄位是 [Id] 了,所以只有 [Id] 值可以快速取得。(返回選取值只能設定一個欄位)
若用 ListBox.ItemsSelected 來取的話,又因為 ItemsSelected 返回的內容是 Row 的集合,想得到 [Name] 的值,必須把集合的 Row 一個一個的讀出來,實在有點麻煩。
在網路上找了幾天的資料,似乎也沒人分享相關的用法。(可能 Access 的控制項太少人用)
最後在 MSDN 的網站上,發現一個關鍵的 ListBox 屬性 ─
ListBox.Column
運算式.Column(Index, Row)
運算式 代表 ListBox 物件的變數。
參數
名稱
|
必要/選用
|
資料類型
|
描述
|
---|---|---|---|
必要
|
長整數的範圍從 0 到減一ColumnCount屬性的設定。
| ||
選用
|
整數的範圍從 0 到ListCount屬性減 1 的設定。
|
大意就是說,只要在 Column 後面接兩個參數:欄 , 列,就可以取得該位置的內容值!!
如:
ListBox.Column(1,1) => John
ListBox.Column(1,3) => Cook
ListBox.Column(0,2) => 2
因此,最後要達到我一開始期望的結果:取得被選中資料的 [Name] 欄位值
只需要用以下語法就行了!!
ListBox.Column(1, ListBox.ListIndex + 1)
※ ListBox.ListIndex 會自己返回被選中的列號,從 0 起算。
如何!?是不是簡單多了呢!!真是好開心呀!哈哈哈
沒有留言:
張貼留言