自定义弹出列表界面获取选中的行索引方法
int selectRows[] = KDTableUtil.getSelectedRows(tblMain);
下列为代码动态加列表字段(该方法繁琐但灵活度高)
package com.kingdee.eas.wastedisposal.hwd.client;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.math.BigDecimal;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import org.apache.log4j.Logger;
import com.kingdee.bos.ctrl.kdf.table.ICell;
import com.kingdee.bos.ctrl.kdf.table.IColumn;
import com.kingdee.bos.ctrl.kdf.table.IRow;
import com.kingdee.bos.ctrl.kdf.table.KDTDefaultCellEditor;
import com.kingdee.bos.ctrl.kdf.table.KDTable;
import com.kingdee.bos.ctrl.kdf.table.event.KDTEditAdapter;
import com.kingdee.bos.ctrl.kdf.table.event.KDTEditEvent;
import com.kingdee.bos.ctrl.swing.KDCheckBox;
import com.kingdee.bos.ctrl.swing.KDFormattedTextField;
import com.kingdee.bos.dao.IObjectCollection;
import com.kingdee.bos.dao.IObjectValue;
import com.kingdee.bos.dao.query.SQLExecutorFactory;
import com.kingdee.bos.ui.face.CoreUIObject;
import com.kingdee.eas.common.client.SysContext;
import com.kingdee.eas.csinterface.syncdatabase.SQLFacadeFactory;
import com.kingdee.eas.fm.common.client.FMClientHelper;
import com.kingdee.eas.framework.ICoreBase;
import com.kingdee.eas.util.SysUtil;
import com.kingdee.eas.util.client.EASResource;
import com.kingdee.eas.util.client.MsgBox;
import com.kingdee.jdbc.rowset.IRowSet;
import com.kingdee.jdbc.rowset.IRowSetMetaData;
import com.kingdee.util.StringUtils;
public class TempIssuePriceVindicate extends AbstractTempIssuePriceVindicate {
private static final Logger logger = CoreUIObject
.getLogger(TempIssuePriceVindicate.class);
public TempIssuePriceVindicate() throws Exception {
super();
}
/**
* 调整弹出界面大小
*/
public void initUIContentLayout() {
super.initUIContentLayout();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setPreferredSize(new Dimension(screenSize.width-450,screenSize.height-300));
setUITitle("暂存入库单修改");
}
public void onLoad() throws Exception {
super.onLoad();
actionAddLine.setVisible(false);
actionRemoveLine.setVisible(false);
this.menuFile.setVisible(false);
this.menuTable.setVisible(false);
btnSave.setVisible(false);
btnSubmit.setVisible(false);
btnSubmit.setEnabled(false);
actionInsertLine.setVisible(false);
this.actionSave.setVisible(false);
this.actionSave.setEnabled(false);
this.actionSubmit.setVisible(false);
this.actionSubmit.setEnabled(false);
this.actionAddLine.setVisible(false);
entrysCulomnInit();
KDCheckBox kdtReceive_selected_CheckBox = new KDCheckBox();
// kdtReceive_selected_CheckBox.setName("kdtReceive_selected_CheckBox");
KDTDefaultCellEditor kdtReceive_selected_CellEditor = new KDTDefaultCellEditor(kdtReceive_selected_CheckBox);
// this.tblMain.getColumn("selected").setEditor(kdtReceive_selected_CellEditor);
tblMainNumberFormat("used");
tblMainNumberFormat("price");
tblMainNumberFormat("amount");
inittblMain();
Calendar c = Calendar.getInstance();
pkendDate.setValue(c.getTime());
c.set(Calendar.DAY_OF_MONTH, 1);
pkbebinDate.setValue(c.getTime());
initKdtReqBill(tblMain);
}
private void tblMainNumberFormat(String key){
KDFormattedTextField kdtEntrys_TextField = new KDFormattedTextField();
kdtEntrys_TextField.setVisible(true);
kdtEntrys_TextField.setEditable(true);
kdtEntrys_TextField.setHorizontalAlignment(2);
kdtEntrys_TextField.setDataType(1);
kdtEntrys_TextField.setMinimumValue(new java.math.BigDecimal("0"));
kdtEntrys_TextField.setMaximumValue(new java.math.BigDecimal("1.0E18"));
kdtEntrys_TextField.setPrecision(3);
KDTDefaultCellEditor kdtEntrys_CellEditor = new KDTDefaultCellEditor(kdtEntrys_TextField);
this.tblMain.getColumn(key).setEditor(kdtEntrys_CellEditor);
}
public void loadFields() {
try {
Map listen = FMClientHelper.removeCompListeners(this);
super.loadFields();
FMClientHelper.addCompListeners(this, listen);
} catch (Exception e) {
e.printStackTrace();
}
entrysCulomnInit();
KDCheckBox kdtReceive_selected_CheckBox = new KDCheckBox();
kdtReceive_selected_CheckBox.setName("kdtReceive_selected_CheckBox");
KDTDefaultCellEditor kdtReceive_selected_CellEditor = new KDTDefaultCellEditor(kdtReceive_selected_CheckBox);
this.tblMain.getColumn("selected").setEditor(kdtReceive_selected_CellEditor);
inittblMain();
Calendar c = Calendar.getInstance();
pkendDate.setValue(c.getTime());
c.set(Calendar.DAY_OF_MONTH, 1);
pkbebinDate.setValue(c.getTime());
}
private void entrysCulomnInit(){
// 新增一列,用于记录原单据分录ID
IColumn addColumn = tblMain.addColumn();
addColumn.setKey("selected");
addColumn = tblMain.addColumn();
// addColumn.getStyleAttributes()
addColumn.setKey("material");
addColumn.getStyleAttributes().setLocked(true);
addColumn = tblMain.addColumn();
addColumn.setKey("groupnumber");
addColumn.getStyleAttributes().setLocked(true);
addColumn = tblMain.addColumn();
addColumn.setKey("price");
// addColumn.getStyleAttributes().setLocked(true);
addColumn = tblMain.addColumn();
addColumn.setKey("used");
addColumn.getStyleAttributes().setLocked(true);
addColumn = tblMain.addColumn();
addColumn.setKey("amount");
addColumn.getStyleAttributes().setLocked(true);
addColumn = tblMain.addColumn();
addColumn.setKey("batch");
addColumn.getStyleAttributes().setLocked(true);
addColumn = tblMain.addColumn();
addColumn.setKey("movenumber");
addColumn.getStyleAttributes().setLocked(true);
addColumn = tblMain.addColumn();
addColumn.setKey("settlecustomername");
addColumn.getStyleAttributes().setLocked(true);
addColumn = tblMain.addColumn();
addColumn.setKey("secondparty");
addColumn.getStyleAttributes().setLocked(true);
addColumn = tblMain.addColumn();
addColumn.setKey("settlecustomer");
addColumn.getStyleAttributes().setLocked(true);
addColumn = tblMain.addColumn();
addColumn.setKey("id");
addColumn.getStyleAttributes().setLocked(true);
// 设置为隐藏,GUI端不显示
addColumn.getStyleAttributes().setHided(true);
// 新增的列,列名赋值
IRow addHeadRow = tblMain.addHeadRow();
addHeadRow.getCell("selected").setValue("选择");
addHeadRow.getCell("material").setValue("危废品名称");
addHeadRow.getCell("groupnumber").setValue("危废品八位码");
addHeadRow.getCell("price").setValue("单价");
addHeadRow.getCell("used").setValue("入库量");
addHeadRow.getCell("amount").setValue("金额");
addHeadRow.getCell("batch").setValue("入库批次");
addHeadRow.getCell("movenumber").setValue("联单编号");
addHeadRow.getCell("settlecustomername").setValue("结算客户");
addHeadRow.getCell("secondparty").setValue("合同乙方");
addHeadRow.getCell("settlecustomer").setValue("结算客户id");
addHeadRow.getCell("id").setValue("ID");
// addHeadRow.getCell("amount").setValue("金额");
// addHeadRow.getCell("amount").setValue("金额");
}
private void inittblMain(){
tblMain.getColumn("selected").setWidth(0);
tblMain.getColumn("material").setWidth(140);
tblMain.getColumn("groupnumber").setWidth(140);
tblMain.getColumn("price").setWidth(80);
tblMain.getColumn("price").getStyleAttributes().setBackground(new Color(255,255,220));
tblMain.getColumn("used").setWidth(80);
tblMain.getColumn("amount").setWidth(120);
tblMain.getColumn("batch").setWidth(120);
tblMain.getColumn("movenumber").setWidth(120);
tblMain.getColumn("settlecustomername").setWidth(120);
tblMain.getColumn("secondparty").setWidth(140);
tblMain.getColumn("settlecustomer").setWidth(140);
// tblMain.getColumn("entryId").setWidth(0);
}
/* private void initButton(){
this.btnSave.setToolTipText("确认");
this.btnSave.setIcon(EASResource.getIcon("imgTbtn_filter"));
this.btnSubmit.setToolTipText("查询");
this.btnSubmit.setIcon(EASResource.getIcon("imgTbtn_autocollate"));
}
*/
/**
* 搜索按钮
*/
protected void btnSearch_actionPerformed(java.awt.event.ActionEvent e)
throws Exception {
tblMain.removeRows();
Calendar c = Calendar.getInstance();
Date endDate = pkendDate.getValue() == null?c.getTime():(Date)pkendDate.getValue();
c.set(Calendar.DAY_OF_MONTH, 1);
Date beginDate = pkbebinDate.getValue() == null?c.getTime():(Date)pkbebinDate.getValue();
SimpleDateFormat sbf = new SimpleDateFormat("yyyy-MM-dd");
String begin = sbf.format(beginDate);
String end = sbf.format(endDate);
String customerName=null;
customerName=this.txtsettleCustomer.getText();
// HWContractInfo info = (HWContractInfo) prmthwContract.getValue();
// 查查询暂存入库单,查询的单据应该是未审核过的暂存入单
StringBuffer sql = new StringBuffer(" /*dialect*/ select b.CFMaterial material,b.CFGroupNumber groupNumber\n ");
sql.append(",convert(decimal(18,2),b.CFPrice) price,b.CFQty used,convert(decimal(18,2),b.CFAmount) amount,b.CFBatch batch\n");
sql.append(",b.CFMoveNumber moveNumber, e.fname_l2 settlecustomerName , d.fname_l2 secondParty\n");
sql.append(",a.CFCustomerID settleCustomer,b.FID id\n");
sql.append("from CT_HW_TempInWarehsBillEntry b\n");
sql.append("inner join CT_HW_TempInWarehsBill a on b.FParentID = a.FID\n");
//sql.append("inner join CT_HW_HWContract c on b.CFHWContractId = c.FID\n");
sql.append("inner join T_ORG_Admin d on d.FID = a.CFAdminOrgID\n");
sql.append("inner join T_BD_Customer e on e.FID = a.CFCustomerID\n");
sql.append("where a.CFAdminOrgID='").append(SysContext.getSysContext().getCurrentAdminUnit().getId());
sql.append("' and a.FBizDate >='").append(begin).append("'\n");
sql.append("and a.FBizDate <='").append(end).append("' ");
sql.append(" and a.CFStatu < 3\n");
if( null!=customerName&&!customerName.equals("") ){
sql.append("and e.fname_l2 like '%"+customerName+"%' ") ;
}
//查询出所有的暂存入库单 暂存状态单据
IRowSet rs = SQLExecutorFactory.getRemoteInstance(sql.toString()).executeSQL();
while(rs.next()){
IRowSetMetaData rowSetMetaData = rs.getRowSetMetaData();
IRow addRow = tblMain.addRow();
for (int i = 1; i <= rowSetMetaData.getColumnCount(); i++) {
addRow.getCell(rowSetMetaData.getColumnLabel(i).toLowerCase()).setValue(rs.getObject(rowSetMetaData.getColumnLabel(i)));
}
//addRow.getCell("selected").setValue(false);
}
}
/**
* 确认按钮
*/
protected void btnSure_actionPerformedmz(ActionEvent e) throws Exception {
int rowCount = tblMain.getRowCount();
/* int selectRows=0;
for (int i = 0; i < rowCount; i++) {
IRow row = tblMain.getRow(i);
Boolean selected = (Boolean) row.getCell("selected").getValue();
if(selected){
selectRows=selectRows+1;
}
}
if(selectRows==0){
MsgBox.showWarning("请先选中要更新的条数!");
SysUtil.abort();
}
MsgBox.showConfirm2("您此次要更新入库单记录为:"+selectRows+" 条记录!");*/
//更新
for (int i = 0; i < rowCount; i++) {
IRow row = tblMain.getRow(i);
row.getCell("price").getValue().toString();
BigDecimal price= new BigDecimal( row.getCell("price").getValue().toString());
BigDecimal used= new BigDecimal( row.getCell("used").getValue().toString());
String id= row.getCell("id").getValue().toString() ;
BigDecimal amt = price.multiply(used).setScale( 2, BigDecimal.ROUND_HALF_UP );
String sql=" update CT_HW_TempInWarehsBillEntry set CFPrice='"+price+"',CFAmount='"+amt+"' where fid='"+id+"' ";
SQLFacadeFactory.getRemoteInstance().exeSQL(sql);
}
MsgBox.showInfo("更新结束!");
}
public void actionSave_actionPerformed(ActionEvent e) throws Exception {
}
public void actionSubmit_actionPerformed(ActionEvent e) throws Exception {
}
private void initKdtReqBill(KDTable table){
table.addKDTEditListener(new KDTEditAdapter() {
public void editStopped(KDTEditEvent e) {
KDTable table = (KDTable) e.getSource();
try {
TempIssuePriceVindicate.this.tblMain_Changed(e.getRowIndex(), e.getColIndex());//sumActAmt(kdtReqBill, txtreqBillAmt);
} catch (Exception ex) {
TempIssuePriceVindicate.this.handUIExceptionAndAbort(ex);
}
}
});
}
private void tblMain_Changed(int rowIndex, int colIndex) throws Exception {
String key = tblMain.getColumn(colIndex).getKey();
if("price".equals(key)){
BigDecimal price = tblMain.getCell(rowIndex, key) == null ?
BigDecimal.ZERO:new BigDecimal(tblMain.getCell(rowIndex, key).getValue().toString());
if(price.doubleValue()<0){
MsgBox.showInfo("单价不得小于0");
}else{
BigDecimal used = tblMain.getCell(rowIndex, "used") == null ?
BigDecimal.ZERO:new BigDecimal(tblMain.getCell(rowIndex, "used").getValue().toString());
String amount = price.multiply(used).stripTrailingZeros().toPlainString();
tblMain.getCell(rowIndex, "amount").setValue(amount);
}
}
}
public void storeFields() {
super.storeFields();
}
public boolean checkBeforeWindowClosing() {
return true;
}
protected IObjectCollection createNewCollection() {
return null;
}
protected IObjectValue createNewData() {
return null;
}
protected ICoreBase getBizInterface() throws Exception {
return null;
}
}