我正在WPF中開發一個小應用程序。我有一個名爲NameListBox
的ListBox
,其ItemsSource
屬性設置爲DataView
,因此顯示客戶名稱列表。名稱由3部分組成:FirstName
,MiddleName
和LastName
。我已使用轉換器在列表中顯示客戶的全名。一切工作正常(我認爲這個級別的細節足以獲得整體圖片)。爲什麼COALESCE不能使用RowFilter?
現在,我想在這樣的NameListBox
使過濾該列表應該只displat包含在名爲CustomerNameSearchBox
的TextBox
輸入文本的客戶名稱。
通過在互聯網上搜索我遇到RowFilter
財產DataView
- 也玩了一點。現在,當我試圖
private void CustomerNameSearchBox_TextChanged(object sender, TextChangedEventArgs e)
{
//((DataView)NameListBox.ItemsSource).RowFilter = @"COALESCE(FirstName+' '+MiddleName+' '+LastName, COALESCE(FirstName+' '+LastName, COALESCE(FirstName, LastName))) LIKE '%" + CustomerNameSearchBox.Text + @"%'";
((DataView)NameListBox.ItemsSource).RowFilter = @"ISNULL(FirstName+' '+MiddleName+' '+LastName, ISNULL(FirstName+' '+LastName, ISNULL(FirstName, LastName))) LIKE '%" + CustomerNameSearchBox.Text + @"%'";
}
這件事給了我預期的結果。但是等等..這裏有一些奇怪的東西!
正如您所看到的,兩條線的結構都是相同的 - 只有COALESCE
代替ISNULL
。但是,當我取消註釋第一行(並註釋掉第二行)時,它不起作用! 它在運行時拋出一個異常,說"The expression contains undefined function call COALESCE()."
!!!!
雖然ISNULL
服務我的目的在這一刻,我真的很想知道爲什麼會發生這種異常。此外,即使是一件簡單的事情,如
(...).RowFilter = @"COALESCE(FirstName,'')";
似乎並沒有工作! (這意味着它不僅僅是一個語法問題)
任何人都可以解釋我的這種行爲? 在此先感謝。
標籤:WPF SQL COALESCE ISNULL的RowFilter
是表由什麼列一個有限的範圍內? – 2009-09-05 18:01:50