HOW TO:將篩選描述元加入至搜尋方法
篩選描述元可讓模型的消費者在方法執行前將值傳入方法。如需詳細資訊,請參閱設計商務資料連接模型。
一種常見的情節就是 SharePoint 中的使用者想要擷取符合某些準則之外部內容類型的執行個體。您可以將篩選描述元加入至搜尋工具方法,以便支援此情節。
若要將篩選描述元加入至搜尋工具方法
在 [BDC 方法詳細資料] 視窗中,依次展開搜尋工具方法的節點和 [參數] 節點,然後加入輸入參數。如需詳細資訊,請參閱 HOW TO:將參數加入至方法。
在方法的詳細資訊 ] 視窗中,選擇參數的型別描述項。
在功能表列上,選擇 檢視, 屬性] 視窗中。
在 [屬性] 視窗中,將 [型別名稱] 屬性設定為適用於該篩選的資料型別。
例如,篩選條件可能會使用訂單日期來限制方法所傳回的銷售訂單數目。若要支援該篩選,必須將型別描述元的 [型別名稱] 屬性設定為 System.DateTime。
在 [方法詳細資料] 視窗中,展開 [篩選描述元] 節點。
在新增篩選器的描述項 清單中,選擇 建立的篩選器描述項。
新的篩選描述元隨即出現在 [篩選描述元] 節點的下方。
在功能表列上,選擇 檢視, 屬性] 視窗中。
在屬性 ] 視窗中,選擇 型別屬性。
在清單中所顯示的型別屬性中,選擇您想要的篩選模式。
比方說,若要建立的篩選器會使用在訂購日期來限制搜尋工具方法以傳回銷售訂單的數目,請選擇比較。比較篩選條件可確保搜尋工具方法會傳回符合指定條件的執行個體。如需每種篩選模式的詳細資訊,請參閱 BDC 所支援的篩選類型 (英文)。
在屬性 ] 視窗中,選擇 相關聯的型別描述項屬性。
在清單中所顯示的相關聯的型別描述項屬性中,選擇您稍早在本程序中建立型別描述項。如此便會將篩選條件與搜尋工具方法的輸入參數相關聯。
將程式碼加入至傳回資料的搜尋工具方法。您可以將輸入參數用做 SELECT 查詢中的條件。
下列範例會傳回具有指定訂單日期的銷售訂單。
注意事項
將 ServerName 欄位的值替換成您的伺服器名稱。
Public Shared Function ReadList(ByVal OrderDateParam As DateTime) As IEnumerable(Of SalesOrderHeader) Const ServerName As String = "MySQLServerName" Dim dataContext As AdventureWorksDataContext = _ New AdventureWorksDataContext("Data Source=" & ServerName & _ ";Initial Catalog=AdventureWorks;Integrated Security=True") Dim NoValuePassedIn As DateTime = Convert.ToDateTime("1/1/1900 12:00:00 AM") Dim DefaultDateTime As DateTime = Convert.ToDateTime("2001-09-01 00:00:00.000") ' If the user does not provide a value for the filter. If OrderDateParam = NoValuePassedIn Then ' Use a default date time value. OrderDateParam = DefaultDateTime End If Dim SalesOrderHeader As IEnumerable(Of SalesOrderHeader) = _ From SalesOrderHeaders In dataContext.SalesOrderHeaders _ Where SalesOrderHeaders.OrderDate = OrderDateParam _ Select SalesOrderHeaders Return SalesOrderHeader End Function
public static IEnumerable<SalesOrderHeader> ReadList(DateTime OrderDateParam) { const string ServerName = "MySQLServerName"; AdventureWorksDataContext dataContext = new AdventureWorksDataContext ("Data Source=" + ServerName + ";" + "Initial Catalog=AdventureWorks;Integrated Security=True"); DateTime NoValuePassedIn = Convert.ToDateTime("1/1/1900 12:00:00 AM"); DateTime DefaultDateTime = Convert.ToDateTime("2001-09-01 00:00:00.000"); // If the user does not provide a value for the filter. if (OrderDateParam == NoValuePassedIn) { // Use a default date time value. OrderDateParam = DefaultDateTime; } IEnumerable<SalesOrderHeader> SalesOrderHeader = from salesOrderHeaders in dataContext.SalesOrderHeaders where salesOrderHeaders.OrderDate == OrderDateParam select salesOrderHeaders; return SalesOrderHeader; }