PB grid组件排序
我用dw grid对数据库的内容进行了排列,比如有姓名,性别,年龄,参加工作时间这几个项目,我如何实现单击姓名这个框实现对姓名排序呢??
[解决办法]
定义窗口实例变量 String is_oldsort, is_oldcol
//数据窗口Clicked()代码:
String ls_object_name, ls_object_type, ls_cur_col
IF row = 0 THEN
ls_object_name = dwo.Name
IF This.Describe(ls_object_name + ".band") = "header" And This.Describe(ls_object_name + ".text") <> "!" THEN
ls_cur_col = Left(ls_object_name , Len(ls_object_name) - 2)
IF ls_cur_col <> is_oldcol THEN
This.Modify( "destroy t_" + is_ordercol)
is_oldcol = ls_cur_col
is_oldsort = "D"
ELSE
IF is_oldsort = "A" THEN
is_oldsort = "D"
ELSE
is_oldsort = "A"
END IF
END IF
This.SetSort(ls_cur_col + " " + is_oldsort)
This.Sort()
END IF
END IF
else//如果是降序
is_sorttype = "A"//記錄上次排序規則
end if
this.setsort(is_ordercol + " " + is_sorttype)
this.sort()
end if
end if
//選擇兩行以上,shift連續選擇,ctrl間斷選擇
ll_clickedrow = this.getclickedrow()
if ll_clickedrow < 1 then return
if keydown(keyshift!) then
if ll_clickedrow < il_lastselectedrow then
ll_start = ll_clickedrow
ll_end = il_lastselectedrow
else
ll_start = il_lastselectedrow
ll_end = ll_clickedrow
end if
if il_lastselectedrow>0 then
selectrow(0, false)
for li_index = ll_start to ll_end
selectrow(li_index, true)
next
else
selectrow(ll_clickedrow, true)
end if
elseif keydown(keycontrol!) then
if isselected (ll_clickedrow) then
selectrow(ll_clickedrow, false)
else
selectrow(ll_clickedrow, true)
end if
else
selectrow(0, false)
selectrow(ll_clickedrow, true)
end if
il_lastselectedrow = ll_clickedrow
//请给分,谢谢
[解决办法]
上例下载地址
http://download.csdn.net/source/3070062
[解决办法]
函数在自定义控件uo_dwsort里,
这样只要指定数据源,就可以为每个数据窗口实现排序功能