一個數據窗口中有字段 :人員編碼,現在用ddw的方法把它顯示為人員的姓名。問題是怎么在排序的時候是按姓名排序而不是按編碼排序。
pb的幫助中Syntax for sort order中說明setsort有兩種排序的語法:
columnname order eg. "emp_lname A" "emp_lname A, dept_id D"
# columnnumber order eg. "#3 A"
不過經過測試發現可以按計算列排序的:
因此,新加一個計算列compute_1,表達式為LookUpDisplay( emp_id ),然后將其隱藏掉
string newsort
newsort = "compute_1 D"
dw_1.SetSort(newsort)
dw_1.Sort( )
我抱著試試看的態度直接用表達式排序,居然發現也可以!真沒有想到pb還留了這么一手:)
string newsort
newsort = "LookUpDisplay( emp_id ) D"
dw_1.SetSort(newsort)
dw_1.Sort( )
此外,有網友說在PFC中有現成的服務.在數據窗口開啟排序服務的後邊加上inv_sort.of_SetUseDisplay(TRUE)就可以了。這個我沒有使用過,供大家參考。
注:該文章原載自本人在pdriver.com的blog。