大师,测试了一个虚表的加载 csv无法自动排序(更新序号)的问题,麻烦看看什么原因,谢谢
通过代码加载的 "[@rowindex]" 顺序记录,删除,添加,拖放都会自动排序。
但是保存到 csv文件后,再打开加载csv就会出现,删除或拖动顺序号重复或无序的状态。
其实这个导出csv的功能做个导出时简单加密选项,避免用户随意修改,可以做为一个小数据库轻量使用,还是不错的,哈哈。
如下图和代码:
import win.ui;
import godking.vlistEx;
/*DSG{{*/
var winform = win.form(text="aardio form";right=630;bottom=526)
winform.add(
button={cls="button";text="删除";left=125;top=462;right=219;bottom=496;z=2};
button2={cls="button";text="清空";left=240;top=461;right=334;bottom=495;z=5};
button3={cls="button";text="saveToCsv";left=408;top=462;right=502;bottom=496;z=3};
button4={cls="button";text="open Csv";left=523;top=461;right=617;bottom=495;z=4};
button5={cls="button";text="添加";left=18;top=462;right=112;bottom=496;z=6};
lsvController={cls="vlistEx";left=16;top=11;right=621;bottom=448;acceptfiles=1;db=1;dl=1;dr=1;dt=1;edge=1;font=LOGFONT(h=-14);z=1}
)
/*}}*/
winform.lsvController.headerFont = ::LOGFONT(name="微软雅黑";point=10;color=0x000000); //设置表头默认字体
winform.lsvController.headerBkcolor = 0xE0E0E0; //表头背景色
winform.lsvController.headerAlign = {1,1,1,1,1}; //水平: 0 左 1 中 2 右 垂直: 0 顶 4 中 8 底
winform.lsvController.setHeaderHeight(30)
winform.lsvController.setRowHeight(36); //行高度
//winform.lsvController.focusColor=0xFFEEEE; //焦点颜色
winform.lsvController.selectedColorFirst=false;
//winform.lsvController.selectedTextColor =0x007FFF
winform.lsvController.selectedBkColor =0x948DC6 //选中行背景色
winform.lsvController.bkColor=0xECECEC; //表格背景色
winform.lsvController.blankColor=0xECECEC //表格空白处颜色
var t = {
{"[@rowindex]", "A"}
{"[@rowindex]", "B"}
{"[@rowindex]", "C"}
{"[@rowindex]", "D"}
{"[@rowindex]", "E"}
{"[@rowindex]", "F"}
{"[@rowindex]", "G"}
{"[@rowindex]", "H"}
}
//winform.lsvController.setTable(t,{"<img name='DefaultUncheckedImg',w=14,h=14> 序号","名称",""},{70,120,300,120},0x1);
winform.lsvController.setTable(t,{"序号","名称",""},{70,120,300},0x1);
winform.lsvController.fillParent(); //使指定列自适应父窗口宽度。参数:列号\n如果不指定列,默认调整最后一列。
winform.lsvController.headerAlign = 1;
winform.lsvController.checkBox.show = true
winform.lsvController.onResizeCol = false; //全局不可调整
winform.lsvController.onDragRow = true; //运行拖动
winform.lsvController.onEditBegin = {true,2,5,6,7}; // 只允许第2列名称、5,时间第6 IP列可编辑
winform.lsvController.onDragRow = function(draglist/*要拖动的行号数组*/,dragtorow/*拖到的目标行号*/){
/*鼠标拖动行。返回true允许拖动,否则禁止拖动。可以使用 dragRow 开头的相关属性进行设置。
1、可以按住 shift 或 ctrl 同时选择多个项目。
2、多个项目拖动后将按索引顺序连续排列。
3、先选择项目,再在选择的项目上按住鼠标左键拖动即可。
4、只能拖动到第一个选择项的前面,或最后一个选择项的后面。
*/
//winform.lsvController.sort(1/*排序字段*/,false/*逆序*/,0/*转换类型*/,false/*使用微软api进行文本排序*/,false/*null靠后*/)
winform.lsvController.update()
return winform.msgbox("确定要拖动该记录插入到当前项?",,1/*_MB_OKCANCEL*/)===1;
}
winform.button4.oncommand = function(id,event){
winform.lsvController.openCsv("/List.csv",true/*包含表头*/,false/*重建列*/)
}
winform.button3.oncommand = function(id,event){
winform.lsvController.saveToCsv("/List.csv",true/*包含表头*/,false/*utf8编码*/)
}
winform.button.oncommand = function(id,event){
winform.lsvController.delRow(winform.lsvController.getSelected());
winform.lsvController.sort(1/*排序字段*/,false/*逆序*/,0/*转换类型*/,false/*使用微软api进行文本排序*/,false/*null靠后*/)
winform.lsvController.update()
}
winform.button2.oncommand = function(id,event){
winform.lsvController.clear()
}
winform.button5.oncommand = function(id,event){
//插入
//var temps = {"[@rowindex]","未命名(双击修改)","双击选择或拖一个文件进来",""}
//winform.lsvController.insertRow(winform.lsvController.selIndex ,temps)
//复制插入
//var temps =table.clone( winform.lsvController.getRowData(winform.lsvController.selIndex))
//winform.lsvController.insertRow(winform.lsvController.selIndex,temps)
winform.lsvController.addRow("[@rowindex]","未命名(双击修改)","双击选择或拖放文件进来",""); //使用行索引标识符
//winform.lsvController.ensureVisible(winform.lsvController.count)
//winform.lsvController.setSelected(winform.lsvController.count);
winform.lsvController.sort(1/*排序字段*/,false/*逆序*/,0/*转换类型*/,false/*使用微软api进行文本排序*/,false/*null靠后*/)
winform.lsvController.update()
}
winform.show();
win.loopMessage();