|
listview 通过 delItem() 移除多条索引问题
问题简述.通过 listview 的 delItem() 方法移除列表当中所选中的2条以上的索引只能清除其中一半 例:选中2条 移除掉1条,选中4条,只移除2条。【选中单条无问题】
<1>选中这几行点击按钮移除所选行 如下图
<2>点击按钮移除刚才选中的5,6,7,8,9行,会有几条没有移除成功,感觉是跳着移除的,跳过了第 6 和 8 条,不清楚是否我哪里写的不妥 如下图
可运行代码
- import win.ui;
- import console;
- /*DSG{{*/
- var winform = win.form(text="aardio form";right=759;bottom=469)
- winform.add(
- button={cls="button";text="删除选中的索引项";left=548;top=399;right=693;bottom=440;z=2};
- listview={cls="listview";left=49;top=43;right=710;bottom=353;edge=1;fullRow=1;items={};z=1}
- )
- /*}}*/
- winform.listview.setExtended(0x4/*_LVS_EX_CHECKBOXES*/)
- winform.listview.insertColumn("id",100);
- winform.listview.insertColumn("name",100);
- winform.listview.insertColumn("age",150);
- winform.listview.onnotify = function(id,code,ptr){
- if( code == 0xFFFFFF9B/*_LVN_ITEMCHANGED*/ ){
-
- var nmListView = winform.listview.getNotifyMessage(code,ptr);
-
- if( !nmListView )
- return;
-
- if( nmListView.uNewState & 0xF000/*_LVIS_STATEIMAGEMASK*/){
- var selIndex = nmListView.iItem;
-
- if( winform.listview.getChecked( selIndex ) ){
-
- winform.listview.setSelected(selIndex);
-
- }else {
-
- winform.listview.setSelected(selIndex,false);
-
- }
- }
- }
-
- }
- for(i=1;50;1){
-
- ind = winform.listview.addItem();
- winform.listview.setItemText(ind,ind,1)
- winform.listview.setItemText("张三"+i,ind,2)
- winform.listview.setItemText("1"+i,ind,3)
-
- }
- winform.button.oncommand = function(id,event){
-
- var sel = winform.listview.selected;
-
-
- for(i=1;#sel;1){
-
- //winform.listview.selIndex = sel[ i ];
- winform.listview.delItem(sel[ i ]);
- console.log(sel[ i ])
- }
-
- }
- winform.show();
- win.loopMessage();
复制代码
请教遇到过这个问题的朋友指点。感谢! |
|