NC 刷新后,停留上一次选择的行(多行)

Posted 冬瓜茶饮料

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了NC 刷新后,停留上一次选择的行(多行)相关的知识,希望对你有一定的参考价值。

如图,我点击批量输入后,会调用列表刷新按钮。但数据之前选择的光标会跳到第一行,原先选择的行就不知道是哪行可。图为最终效果


 

// 批量输入日期后实时刷新 apply update(batch input date) to model(UI)
        getDataManager().refresh();
        // 拿到表头
        nc.ui.pub.beans.UITable htb = listView.getBillListPanel()
                .getHeadTable();
        htb.clearSelection();// 先清除

        // 设置列表选择模式
        htb.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
        // re-find rows which still should be selected by judging pk*
        List<AggSellctrVO> newData = tmodel.getData();
        List<Integer> newnumList = new ArrayList(num.length);
        for (int i = 0, I = newData.size(); i < I; ++i) {
            if (pkList.remove(newData.get(i).getParentVO().getPk_sellctr_h())) {
                newnumList.add(i);
            }
        }
        int[] numr = integer2int(newnumList.toArray(new Integer[0]));// 存活(仍有对应纪录/最新)的被选行
        // 找到最小和最大 行号和列号
        int[] mm = minmax(numr, htb.getRowCount() - 1, -1);
        // 选中min~max
        htb.setRowSelectionInterval(mm[0], mm[1]);

        // start 使用排除法,清除不应选的行
        List<Integer> list = new ArrayList<Integer>(mm[1] - mm[0] + 1);
        for (int i = mm[0] + 1; i < mm[1]; ++i) {
            list.add(i);
        }
        for (int i = 0; i < numr.length; ++i) {
            Integer t = numr[i];
            list.remove(t);
            // 选中单元格
            htb.changeSelection(t, htb.getColumnCount(), false, true);
        }
        for (Integer i : list) {
            htb.getSelectionModel().removeSelectionInterval(i, i);
        }
        // end 使用排除法,清除不应选的行

 

以上是关于NC 刷新后,停留上一次选择的行(多行)的主要内容,如果未能解决你的问题,请参考以下文章

按一次返回按钮停留在同一个片段上,如果按两次,它将返回到上一个片段

html 返回上一页,并且刷新

winform。 listview 更新数据后刷新

WebView返回时停留在第一层界面,重复刷新此界面

剑道网格丢失选定的行

微信返回上一页停留在上次点击的位置