顯示具有 DataSource 標籤的文章。 顯示所有文章
顯示具有 DataSource 標籤的文章。 顯示所有文章

2010年6月4日

[ASPNET] 客製化傳入 DataSource 控制項的參數

坎尼最近玩了一下許久未用的 DataSource 控制項
對於傳入的 Parameter 有些疑問 (見下圖)
op03如果是用精靈視窗,Control 會自動帶入預設的 Property
若是想要用其他的屬性來當作參數值該怎麼辦呢?

I. 取得資料來源

這邊坎尼用到了前幾天講的技巧,建立了一個暫存表並回傳查詢值
op01
另外還用了 SQL Server 2008 才有的 Mutli-Insert 語法:
在 Values 後面,以 「,」隔開 要建立的值

最後再回傳符合條件的查詢結果
可以看到範例中是用 Like,所以要記得加 %

II. 實戰

在畫面上放一個 DropDownList,當作查詢條件的傳入值
另外再放一個 GridView 來呈現資料
op02建立一個 ObjectDataSource
並用精靈選擇 DropDownList 當作參數值來源
op03預設是用 .SelectedValue 屬性當作傳入值
但以上面 DropDownList 目前的設定來看,會查不到任何資料

所以坎尼偷偷的切換到 Source 視窗
靜悄悄地把 SelectedValue 改成 SelectedItem.Text
op04 
按下瀏覽來查看一下成果
op05
狸貓換太子成功!!!  收工!

III. 小結

了解可以自定要傳入的屬性當參數後
DataSource 控制項在使用上也能更有彈性 :)

2009年3月23日

DataSource 好好玩

今天坎尼突然發現 WebControl 中常見的 DataSource 屬性是 object
於是想說除了 DataView 以外,是否還支援其他類型?

首先來看一下 DataSource 始祖 BaseDataBoundControl.DataSource 定義
「設定 DataSource 屬性後,會呼叫 ValidateDataSource 方法。此外,如果資料繫結控制項已初始化,則會呼叫 OnDataPropertyChanged 方法,將 RequiresDataBinding 屬性設定為 true。」

似乎沒講到 object 可支援的類型
再來看一下上述的句子中所提到的 ValidateDataSource 定義
「要驗證的物件。通常是 IEnumerableIListSourceIDataSourceIHierarchicalDatasource 的執行個體。」

這邊很明確的指出 DataSource 應該會支援以上四種泛型資料

ok~實驗開始

先在畫面上放個擁有 DataSource 屬性的 WebControl (這邊是放ListBox)
再放上兩個觸發事件的 Button

第一個 Button 事件,寫下呼叫 System.IO.Directory.GetFiles 方法
製造一個 String Array,再將 Array 傳給 ListBox1.DataSource
第二個 Button 事件則是傳入一個字串給 ListBox1

DataSource 來源為 String Array,恩~可以做 DataBind

但當來源為字串時,非但沒有出錯
還將 hello world 切成 array來顯示!!! (據測試,應為 CharArray )

看來 .NET 會自動的將字串轉為 CharArray 再進行 DataBind 的動作
坎尼再用 Gridview 來看一下繫結的欄位是啥~ 疑~ Item?

可是當坎尼自己建立個欄位,並將 DataField 設為 Item 時
此時反倒是出現錯誤:「找不到欄位 Item」(還真是令人搞不懂

不過坎尼此時也發覺到,雖然 DataSource 有這些特性
平常 Coding 用到的機率少之又少,於是就此打住

會用到的作法大概就是列出清單之類的 (如範例中的檔案清單

Google Spreadsheet 裡用規則運算式

最近因為工作關係,遇到要用 Google Form 及 Google Sheet 所以研究了 Google Sheet 裡的一些 function 怎麼用 首先,分享一下如何在 Google Sheet 裡用規則運算 :D