1.总体思路 nc 刷新的方法就是继承刷新默认的class 类,然后在action类中 获取页面的id 通过id来查询数据,将查到的数据用实体的数据接收,然后塞到modle中显示即可。

需要注意的有两点 一时 注意sql的优化,比如多个id查询 最好不要用for 循环遍历去一个一个查 最好是用in来查询,还有一个需要注意 用in查询 字段最好不要超过3000.

在查询过程中,由于数据量比较大,需要调用风车界面 ,在数据没查完 需要调用它 ,调完了 就结束。

具体代码如下:

package nc.ui.am.actions.batch;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;

import nc.bs.framework.common.NCLocator;
import nc.itf.uap.IUAPQueryBS;
import nc.jdbc.framework.processor.BeanListProcessor;
import nc.ui.am.file.ace.view.ShowBatchBillTable;
import nc.ui.pub.beans.MessageDialog;
import nc.ui.pub.beans.progress.DefaultProgressMonitor;
import nc.ui.pub.beans.progress.IProgressMonitor;
import nc.ui.pubapp.uif2app.model.BatchBillTableModel;
import nc.ui.uif2.ShowStatusBarMsgUtil;
import nc.ui.uif2.actions.batch.BatchRefreshAction;
import nc.ui.uif2.components.progress.TPAProgressUtil;
import nc.vo.am.file.EquipmentPrice;
import nc.vo.pub.BusinessException;

public class MyBatchRefresh extends BatchRefreshAction{

private static final long serialVersionUID = 7719479915326525195L;
private ShowBatchBillTable editor;
private BatchBillTableModel model = null;
private IUAPQueryBS query;
private TPAProgressUtil tpaProgressUtil;
private Container parent;
public MyBatchRefresh() {
super();
setBtnName("刷新");
setCode("refreshAction");
}

@Override
public void doAction(ActionEvent arg0) throws Exception {

new Thread(new Runnable() {
@Override
public void run() {
//方案计算进度条
DefaultProgressMonitor montior = getTpaProgressUtil().getTPAProgressMonitor();
montior.beginTask("正在刷新,请稍等..........", IProgressMonitor.UNKNOWN_TOTAL_TASK);
montior.setProcessInfo("正在刷新,请稍等..........");
    try {
refresh();
} catch (BusinessException e) {

e.printStackTrace();
}
montior.done();
MessageDialog.showHintDlg(parent, "提示", "刷新成功!!");
}}).start();

}

/**
* pk_equip是这种形式'','','',...,''
* @param pk_equip
* @return
* @throws BusinessException 
*/
public void refresh() throws BusinessException{
int rows = this.getEditor().getBillCardPanel().getBillModel().getRowCount();
if(rows<=0){//表示没有数据,则不用更新界面
return;
}
//准备容器
List<EquipmentPrice> result =new ArrayList<EquipmentPrice>();

//获取所有设备的主键并拼接成这种形式'','','',...,''
StringBuffer box = new StringBuffer();//存放设备主键

for(int i=0;i<rows;i++){
String pk_equip=(String) this.getEditor().getBillCardPanel().getBodyValueAt(i, "pk_equip");
box.append("'"+pk_equip+"',");
//判断当box的长度是3000的倍数,执行一次查询
if(box.length()%2700==0){
//查询数据
String sql=this.getSql(box.substring(0, box.lastIndexOf(",")));
@SuppressWarnings("unchecked")
List<EquipmentPrice>  equipmentPrice=  (List<EquipmentPrice>) getQuery().executeQuery(sql, new BeanListProcessor(EquipmentPrice.class));    
  //清空字符串
box.delete(0, 2700);
//添加list数组
result.addAll(equipmentPrice);
}

}
 //循环完查询多余的主键
String sql=this.getSql(box.substring(0, box.lastIndexOf(",")));
List<EquipmentPrice>  equipmentPrice=  (List<EquipmentPrice>) getQuery().executeQuery(sql, new BeanListProcessor(EquipmentPrice.class));    
result.addAll(equipmentPrice);
//更新界面
if (result != null && result.size()>0) {
this.getModel().initModel(result.toArray(new EquipmentPrice[0]));
}

//显示状态值
ShowStatusBarMsgUtil.showStatusBarMsg("成功刷新"+rows+"条数据", model.getContext());

}
private String getSql(String pk_equip) {
StringBuffer sql = new StringBuffer();
sql.append(" select ");
sql.append(" pk_equip pk_list , ");
sql.append(" pk_equip pk_equip, ");
sql.append(" def1 price, ");
sql.append(" def2 category, ");
sql.append(" pk_group pk_group, ");
sql.append(" pk_org pk_org, ");
sql.append(" borrow_flag state, ");
sql.append(" creator creator, ");
sql.append(" creationtime creationtime, ");
sql.append(" modifier modifier, ");
sql.append(" modifiedtime modifiedtime ");
sql.append(" from pam_equip ");
sql.append(" where  pam_equip.dr=0 ");
sql.append(" and  equip_code in ("+pk_equip+") ");
return sql.toString();
}

public IUAPQueryBS getQuery(){
if(query==null){
query=NCLocator.getInstance().lookup(IUAPQueryBS.class);
}
return query;
}

public ShowBatchBillTable getEditor() {
return editor;
}

public void setEditor(ShowBatchBillTable editor) {
this.editor = editor;
}

public BatchBillTableModel getModel() {
return model;
}

public void setModel(BatchBillTableModel model) {
this.model = model;
model.addAppEventListener(this);
}
private TPAProgressUtil getTpaProgressUtil() {
if (tpaProgressUtil == null) {
tpaProgressUtil = new TPAProgressUtil();
tpaProgressUtil.setContext(getModel().getContext());  //此句不可以少,否则报空指针异常
}
return tpaProgressUtil;
}

}

nc 刷新时调动风车界面相关推荐

  1. android 解决listview.notifyDataSetChanged刷新时Imageloader加载图片闪烁问题

    今天,简单讲讲android里再listview调用notifyDataSetChanged刷新界面时,Imageloader加载图片会闪烁的问题. 最近,发现app里的listview图片会出现闪烁 ...

  2. SwiftUI放在Section中的进度条(ProgressView)首次刷新时不显示的解决

    问题现象 SwiftUI中Section是很常用的容器视图,不过使用过程中它或多或少会存在一些小问题,让人又爱又恨. 在iOS15中,放在Section中的进度环(环状样式的ProgressView) ...

  3. 用友nc登陆提示java_用友NC软件无法进入登陆界面,提示“网页上有错误”等现象   问题现象...

    用友NC软件无法进入登陆界面,提示"网页上有错误"等现象 问题现象 可以打开web界面,但无法进入登陆界面,页面左下角提示"网页上有错误",或提示java相关错 ...

  4. asp.net防止刷新时重复提交

    前段时间遇到了需要禁用刷新的需求,f5按钮就不说了,简单的js就能把它禁用,但是工具条上的刷新按钮却傻傻干不掉. 如果简单的在刷新时重新加载画面,通过window.location.href=&quo ...

  5. 使用ansible批量部署开机启动时为字符界面

    使用ansible批量部署开机启动时为字符界面 一.查看当前启动默认的引导目标 ansible product -u user1 -b -a "systemctl get-default&q ...

  6. android listview 数据同步,android中ListView数据刷新时的同步方法

    本文实例讲述了android中ListView数据刷新时的同步方法.分享给大家供大家参考.具体实现方法如下: public class Main extends BaseActivity { priv ...

  7. [html] 页面刷新时sessionStroage会变(会清空)吗?

    [html] 页面刷新时sessionStroage会变(会清空)吗? 不会SessionStroage 是数据页面会话级别的, 当你在打开这个页面的时候会被创建, 并且重新加载或恢复页面仍会保持原来 ...

  8. 提供一个Android原生的Progress——SwipeToRefreshLayout下拉刷新时的等待动画

    先来上个图看看效果: 这里我为什么要单独把这个拿出来呢,因为最近才开始接触Android最新的东西,也就是5.0以上的东西,发现Android提供的SwipeToRefreshLayout是没有上拉加 ...

  9. Android ListView下拉刷新时卡的问题解决小技巧

    问题:ListView下拉刷新时看上去非常的卡 解决方案: 在BaseAdapter的getView方法中,有三个参数 public View getView(int position, View c ...

最新文章

  1. linux分区合并不损坏系统,一次Linux磁盘损坏导致系统不可用恢复实例
  2. db2v9/9.5高级应用开发_Spark v2.4.3应用程序开发入门-基于IDEA/Maven 构建简单应用
  3. Xcode终端快捷键
  4. 千万级别数据查询优化_MySQL大数据量分页查询方法及其优化
  5. bigdecimal 保留两位小数_一律使用 BigDecimal,避免后患?
  6. vue-js 特殊变量$event常识
  7. CMFCColorButton的使用以及重绘
  8. Intel微处理器列表_百度百科
  9. mouseenter 延迟_低延迟电竞蓝牙耳机,南卡Lifte Pro安卓手机上的无线舒适体验
  10. 图解Windows下QT编程入门
  11. python抓取微博数据_技术入门 | python利用微博api获取数据
  12. 【算法与数据结构】—— 并查集
  13. 飞书信终极外贸自建站系统带分销拼团社交裂变自动售后机器人
  14. 将CD转MP3工具(WIN7以上可以使用)
  15. QT -- 多线程 —— moveToThread
  16. 酷播云html5倍速功能视频播放器,Chrome扩展推荐:一个能16倍速播放的免费视频倍速播放器...
  17. redmine配置邮箱提醒步骤(qq企业邮箱和个人邮箱)
  18. android dashboard 开源,android dashboard布局
  19. 分布式系统课程总结 西电计算机学院
  20. git同步代码到远程github仓库

热门文章

  1. CAPM1:有效市场假说
  2. 不是那个层次的人,也便没机会领略…
  3. win8全角/半角切换
  4. python海伦公式求三角形面积程序流程图_《求三角形面积程序代码实现》教学设计...
  5. ROS中7自由度机械臂自定义发布订阅节点
  6. ABAP 未转换值和值的互相转换函数
  7. 京东面经 10.10
  8. Spring Boot—13、发送电子邮件
  9. 编译原理课程实践——实现一个初等函数运算语言的解释器或编译器
  10. 电脑声音没了怎么恢复