- 浏览: 98323 次
- 性别:
- 来自: 上海
最新评论
-
jerry_shen:
围观下载请去: https://gitee.com/jerry ...
和平之翼代码生成器SHCEU 3.2版 千年隼 正在火热开发 -
zjc801:
很好用呀,感谢了!
PHP开源公司订饭系统,新版1.4.0发布。 -
jerry_shen:
请点击浏览链接以下载后面的3卷压缩文件。
手工代码生成技术视频 -
jerry_shen:
多半是conf文件夹下的conf.php配置文件里的用户名,密 ...
PHP开源公司订饭系统,新版1.5.0发布。 -
alertx:
搭建好后,输入博主给的用户名与密码不能成功登录,且无任何提示。 ...
PHP开源公司订饭系统,新版1.5.0发布。
这里是我写的一个Grid类,可以用作数据表示,传输。Excel解析等等方面。这里的源码是四年前的代码原型。等项目过一阶段我会放出现在和spring BindException集成的版本。
/** * <p> * Grid description * </p> * * @author Jerry Shen * @version v 1.0 Dec. 1st, 2004 * --------------------------------------------------------------------------- * @History */ package com.infosys.redpas.model; import java.util.ArrayList; import java.util.TreeMap; public class Grid { private Row[] rows; private Modeler rowModeler; private int width = 0; private TreeMap metaData; private Row metaRow; public Grid(){ super(); rowModeler = new DefaultModeler(); metaData = new TreeMap(); metaRow = null; } public Grid(Modeler m){ this(); setRowModeler(m); } /** * @return Returns the rowModeler. */ public Modeler getRowModeler() { return rowModeler; } /** * @param rowModeler The rowModeler to set. */ public void setRowModeler(Modeler rowModeler) { this.rowModeler = rowModeler; } /** * @return Returns the width. */ public int getWidth() { return width; } /** * @param width The width to set. */ public void setWidth(int width) { this.width = width; } // Get the rows count of the grid public int getHeight(){ if (rows==null) return 0; return rows.length; } // set up the grid table head row public void setMetaRow(Row r){ if (getHeight()==0&& r != null && r.getFieldsNumber() > 0 ){ metaRow = r; setWidth(r.getFieldsNumber()); } else if (getWidth()> 0 && r.getFieldsNumber()==getWidth()){ metaRow = r; } } // get the grid table head row public Row getMetaRow(){ if (metaRow != null) return metaRow.getRow(); else return Row.EMPTY_ROW; } // get the grid table head by col public String getRowHead(int col){ Row r = getMetaRow(); if (r!=null && !(r.getField(col)==null ||"".equals(r.getField(col)))) return r.getField(col); else return ""; } // add a row to the grid, the row will be validated public void addRow(Row r){ if (rowModeler == null||Row.EMPTY_ROW.equals(r)) return; if (!validate(r)) return; if (rows == null) { if (getWidth()==0){ rows = new Row[1]; rows[0] = r; width = r.getFieldsNumber(); metaRow = new Row(getWidth()); } else if (getWidth() == r.getFieldsNumber()) { rows = new Row[1]; rows[0] = r; }else { return; } } else if (getWidth() == r.getFieldsNumber()){ Row[] rs = new Row[getHeight()+1]; for (int i=0;i<getHeight();i++) rs[i] = rows[i]; rs[getHeight()] = r; rows = rs; } else { return; } } // remove one row of the grid public void removeRow(int pos){ if (pos < 0 || getHeight() <= pos || rows == null){ return; } else if (getHeight() == 1 && pos == 0){ rows = null; return; } else { Row[] rs = new Row[getHeight()-1]; for (int i=0,j=0; i <getHeight()-1; i++,j++){ if (j!=pos) { rs[i] = rows[j]; } else { i--; } } rows = rs; } } // model one row to a Model object public Model doModel(int row){ if (rowModeler == null) return null; if (row < getHeight() && row >= 0 && (! (rowModeler == null))){ return rowModeler.doModel(rows[row]); } else return null; } // set one field of the grid public void setField(int row, int col, String value){ if (row >=0 && row < getHeight() && col >= 0 && col < getWidth()) rows[row].setField(col,value); } // get one field of the grid public String getField(int row, int col){ if (row >=0 && row < getHeight() && col >= 0 && col < getWidth() && rows != null) return rows[row].getField(col); else return null; } // get the row of the grid public Row getRow(int row){ if (row >= 0 && row < getHeight() ) return rows[row].getRow(); else return null; } // set one row of the grid, the row will be validated public void setRow(int row,Row r){ if (r.getFieldsNumber()== getWidth() && row >= 0 && row < getHeight() && validate(r)) rows[row] = r; } // get the row(use as an colum) of one colum public Row getColum(int col){ if (col >= 0 && col < getWidth()) { Row r = new Row(getHeight()); for (int i=0; i< r.getFieldsNumber();i++) r.setField(i,getField(i,col)); return r; } else return null; } // set one colum of this grid public void setColum(int col,Row colum){ if (getHeight()==colum.getFieldsNumber()&&col >=0 && col < getWidth()){ for (int i=0; i < getHeight();i++) setField(i,col,colum.getField(i)); } } // set the meta data carried by the grid // if the key is not existed, then create a new key public void setMetaData(String key,String value){ try { metaData.put(key, value); }catch (Exception e){ } } // get the meta data carried with the grid // return "" if the meta data is not existed public String getMetaData(String key){ try { String str = (String)metaData.get(key); if (str == null || "".equals(str)) return ""; else return str; } catch (Exception e){ return ""; } } // generate the model list. public ArrayList generateList(){ ArrayList arr = new ArrayList(); for (int i=0; i < getHeight();i++) { Model m = doModel(i); if (m==null) return null; else arr.add(m); } return arr; } // print out the grid on the console public void consoleShow(){ for (int i=0; i < getHeight();i++){ Row r = getRow(i); r.consoleShow(); } } // see wether one row in the grid is validated public boolean validate(Row r){ if (rowModeler == null) return false; else return rowModeler.validate(r); } // see all the rows in the grid is validated public boolean validate(){ if (rowModeler == null) return false; else if (getHeight()==0) return false; else { for (int i=0; i<getHeight();i++){ if (!validate(rows[i])) return false; } return true; } } // add an model to the grid using the rowmodeler's deModel public void addRowByModel(Model m){ try { Row r = rowModeler.deModel(m); addRow(r); }catch (Exception e){ } } }
/** * <p> * Model description * </p> * * @author Jerry Shen * @version v 1.0 Dec. 1st, 2004 * --------------------------------------------------------------------------- * @History */ package com.infosys.redpas.model; import java.io.Serializable; // This is the parent class for all the models public class Model implements Serializable{ }
/** * <p> * Modeler description * </p> * * @author Jerry Shen * @version v 1.0 Dec. 1st, 2004 * --------------------------------------------------------------------------- * @History */ package com.infosys.redpas.model; public interface Modeler{ // Model a model from a row public Model doModel(Row r); // validate to see if the row can model a model public boolean validate(Row r); // deModel a model to a row public Row deModel(Model m); }
/** * <p> * DefaultModeler description * </p> * * @author Jerry Shen * @version v 1.0 Dec. 2nd, 2004 * --------------------------------------------------------------------------- * @History */ package com.infosys.redpas.model; // The dumb defaultModeler for normal grids // a Grid must had a Modeler public class DefaultModeler implements Modeler{ public Model doModel(Row r){ return r; } public boolean validate(Row r){ return true; } public Row deModel(Model m){ return Row.EMPTY_ROW; } }
/** * <p> * Row description * </p> * * @author Jerry Shen * @version v 1.0 Dec. 1st, 2004 * --------------------------------------------------------------------------- * @History modified by Jerry Shen, Dec. 9th, 2004 */ package com.infosys.redpas.model; public class Row extends Model{ private String[] fields; public static final Row EMPTY_ROW = new Row(); public Row(int length){ fields = new String[length]; } public Row(){ this(1); setField(0,""); } public Row(String[] row){ this(row.length); setFields(row); } public int getFieldsNumber(){ Row r= getRow(); if (r.getField(0)==null ||"".equals(r.getField(0))) return 0; else return fields.length; } public void setFields(String[] fields){ this.fields = fields; } public String[] getFields(){ return fields; } public String getField(int pos){ if (this==Row.EMPTY_ROW ||fields == null || fields.length < pos + 1 || pos < 0) return ""; else return fields[pos]; } public void setField(int pos,String value){ if (this == Row.EMPTY_ROW ||fields == null || fields.length < pos + 1) return; else fields[pos] = value; } public String toString(){ StringBuffer sb = new StringBuffer(); if (getFieldsNumber()>0){ for (int i=0; i < getFieldsNumber();i++) sb.append(getField(i)).append(", "); sb.deleteCharAt(sb.length()-1).deleteCharAt(sb.length()-1); return sb.toString(); } else return ""; } public void consoleShow(){ System.out.println(toString()); } public Row getRow(){ if (fields==null) return EMPTY_ROW; else { for (int i= 0;i<fields.length;i++){ if (fields[i]!= null) return this; } return EMPTY_ROW; } } public boolean equals(Row r){ Row thisRow = this.getRow(); Row thatRow = r.getRow(); if (thisRow.getFieldsNumber()!=thatRow.getFieldsNumber()) return false; else { for (int i = 0; i < thisRow.getFieldsNumber();i++){ if (!thisRow.getField(i).equals(thatRow.getField(i))) return false; } return true; } } }
/** * <p> * ActualExpenseModeler description * </p> * * @author Jerry Shen * @version v 1.0 Dec. 2nd, 2004 * --------------------------------------------------------------------------- * @History */ package com.infosys.budget.modeler; import com.infosys.budget.model.ActualExpense; import com.infosys.redpas.model.Model; import com.infosys.redpas.model.Modeler; import com.infosys.redpas.model.Row; public class ActualExpenseModeler implements Modeler{ private Row row; public Model doModel(Row r){ if (!validate(r)) { return null; } else { try { ActualExpense exp = new ActualExpense(); String[] rValue = r.getFields(); exp.setActualExpenseId(rValue[0]); exp.setExpenseHeadId(rValue[1]); exp.setBudgetId(rValue[2]); exp.setMonth(rValue[3]); exp.setAmount(Double.parseDouble(rValue[4])); exp.setCurrencyId(rValue[5]); exp.setExchangeRate(Double.parseDouble(rValue[6])); exp.setInputTime(rValue[7]); exp.setActualExpenseBatchId(rValue[8]); return exp; } catch (Exception e){ return null; } } } public boolean validate(Row r){ if (r==null || r.getFieldsNumber()!= 9) return false; for (int i=0; i < r.getFieldsNumber();i++){ if (r.getField(i)==null || "".equals(r.getField(i))){ return false; } } try { Long.parseLong(r.getField(0)); Long.parseLong(r.getField(1)); Long.parseLong(r.getField(2)); Float.parseFloat(r.getField(4)); Float.parseFloat(r.getField(6)); Long.parseLong(r.getField(8)); } catch (Exception e){ return false; } return true; } public Row deModel(Model actualModel){ if (actualModel == null) { return Row.EMPTY_ROW; } else { try { ActualExpense actual=(ActualExpense)actualModel; Row r = new Row(9); r.setField(0,actual.getActualExpenseId()); r.setField(1,actual.getExpenseHeadId()); r.setField(2,actual.getBudgetId()); r.setField(3,actual.getMonth()); r.setField(4,""+actual.getAmount()); r.setField(5,actual.getCurrencyId()); r.setField(6,""+actual.getExchangeRate()); r.setField(7,actual.getInputTime()); r.setField(8,actual.getActualExpenseBatchId()); return r; } catch (Exception e){ return Row.EMPTY_ROW; } } } }
评论
5 楼
jerry_shen
2008-08-24
没有界面,是用于数据表示的Utils类。
4 楼
nismaster
2008-08-24
看一下显示的界面拉
3 楼
jerry_shen
2008-08-24
另两个相关类
/** * <p> * ActualExpense description * </p> * * @author Jerry Shen * @version v 1.0 Nov. 29th, 2004 * --------------------------------------------------------------------------- * @History */ package com.infosys.budget.model; import com.infosys.redpas.model.Model; public class ActualExpense extends Model { private String actualExpenseId; private String expenseHeadId; private String budgetId; private String month; private double amount; private String currencyId; private double exchangeRate; private String inputTime; private String actualExpenseBatchId; // constructors public ActualExpense(){ super(); } /** * @return Returns the actualExpenseId. */ public String getActualExpenseId() { return actualExpenseId; } /** * @param actualExpenseId The actualExpenseId to set. */ public void setActualExpenseId(String actualExpenseId) { this.actualExpenseId = actualExpenseId; } /** * @return Returns the amount. */ public double getAmount() { return amount; } /** * @param amount The amount to set. */ public void setAmount(double amount) { this.amount = amount; } /** * @return Returns the budgetId. */ public String getBudgetId() { return budgetId; } /** * @param budgetId The budgetId to set. */ public void setBudgetId(String budgetId) { this.budgetId = budgetId; } /** * @return Returns the currencyExchangeRate. */ public double getExchangeRate() { return exchangeRate; } /** * @param exchangeRate The currencyExchangeRate to set. */ public void setExchangeRate(double exchangeRate) { this.exchangeRate = exchangeRate; } /** * @return Returns the currencyId. */ public String getCurrencyId() { return currencyId; } /** * @param currencyId The currencyId to set. */ public void setCurrencyId(String currencyId) { this.currencyId = currencyId; } /** * @return Returns the expenseHeadId. */ public String getExpenseHeadId() { return expenseHeadId; } /** * @param expenseHeadId The expenseHeadId to set. */ public void setExpenseHeadId(String expenseHeadId) { this.expenseHeadId = expenseHeadId; } /** * @return Returns the inputTime. */ public String getInputTime() { return inputTime; } /** * @param inputTime The inputTime to set. */ public void setInputTime(String inputTime) { this.inputTime = inputTime; } /** * @return Returns the month. */ public String getMonth() { return month; } /** * @param month The month to set. */ public void setMonth(String month) { this.month = month; } /** * @return Returns the actualExpenseBatchId. */ public String getActualExpenseBatchId() { return actualExpenseBatchId; } /** * @param actualExpenseBatchId The actualExpenseBatchId to set. */ public void setActualExpenseBatchId(String actualExpenseBatchId) { this.actualExpenseBatchId = actualExpenseBatchId; } public boolean equals(Object o) { if (o == null) { return false; } else if (this == o) { return true; } else if (o instanceof ActualExpense) { ActualExpense that = (ActualExpense) o; return that.getActualExpenseId().equals(this.getActualExpenseId()); } else { return false; } } public String toString(){ StringBuffer sb = new StringBuffer(); sb.append("actualExpenseId:").append(getActualExpenseId()).append("\n") .append("amount:").append(getAmount()).append("\n") .append("budgetId:").append(getBudgetId()).append("\n") .append("exchangeRate:").append(getExchangeRate()).append("\n") .append("currencyId:").append(getCurrencyId()).append("\n") .append("expenseHeadId:").append(getExpenseHeadId()).append("\n") .append("inputTime:").append(getInputTime()).append("\n") .append("month:").append(getMonth()).append("\n") .append("actualExpenseBatchId").append(getActualExpenseBatchId()).append("\n"); return sb.toString(); } }
/** * <p> * ActualExpenseBatch description * </p> * * @author Jerry Shen * @version v 1.0 Dec. 3rd, 2004 * --------------------------------------------------------------------------- * @History */ package com.infosys.budget.model; import com.infosys.redpas.model.Model; public class ActualExpenseBatch extends Model { private String actualExpenseBatchId; private String budgetId; private String budgetName; private String month; private String comments; // constructors public ActualExpenseBatch(){ super(); } /** * @return Returns the actualExpenseBatchId. */ public String getActualExpenseBatchId() { return actualExpenseBatchId; } /** * @param actualExpenseBatchId The actualExpenseBatchId to set. */ public void setActualExpenseBatchId(String actualExpenseBatchId) { this.actualExpenseBatchId = actualExpenseBatchId; } /** * @return Returns the budgetId. */ public String getBudgetId() { return budgetId; } /** * @param budgetId The budgetId to set. */ public void setBudgetId(String budgetId) { this.budgetId = budgetId; } /** * @return Returns the budgetName. */ public String getBudgetName() { return budgetName; } /** * @param budgetName The budgetName to set. */ public void setBudgetName(String budgetName) { this.budgetName = budgetName; } /** * @return Returns the comment. */ public String getComments() { return comments; } /** * @param comment The comment to set. */ public void setComments(String comment) { this.comments = comment; } /** * @return Returns the month. */ public String getMonth() { return month; } public String getMonthName() { if ("00".equals(month)) return "Jan"; else if ("01".equals(month)) return "Feb"; else if ("02".equals(month)) return "Mar"; else if("03".equals(month)) return "Apr"; else if ("04".equals(month)) return "May"; else if ("05".equals(month)) return "Jun"; else if ("06".equals(month)) return "Jul"; else if ("07".equals(month)) return "Aug"; else if("08".equals(month)) return "Sep"; else if ("09".equals(month)) return "Oct"; else if ("10".equals(month)) return "Nov"; else if ("11".equals(month)) return "Dec"; else return "Jan"; } /** * @param month The month to set. */ public void setMonth(String month) { this.month = month; } public boolean equals(Object o) { if (o == null) { return false; } else if (this == o) { return true; } else if (o instanceof ActualExpense) { ActualExpense that = (ActualExpense) o; return that.getActualExpenseId().equals(this.getActualExpenseBatchId()); } else { return false; } } public String toString(){ StringBuffer sb = new StringBuffer(); sb.append("actualExpenseBatchId:").append(getActualExpenseBatchId()).append("\n") .append("budgetId:").append(getBudgetId()).append("\n") .append("comment:").append(getComments()).append("\n") .append("month:").append(getMonth()).append("\n"); return sb.toString(); } }
2 楼
jerry_shen
2008-08-23
Grid类的metaData是元数据,metaRow是题头行,Modeler是造型器,Row是数据行。
1 楼
jerry_shen
2008-08-23
本质上,这个类是两维电子表格,两维的字符串数据集和他们的一些方便方法的集成。
发表评论
-
时空之门前端代码生成器公布,动词算子式代码生成器阵列的通用前端解决方案
2019-07-21 15:06 440时空之门前端代码生成器公布,动词算子式代码生成器阵列的 ... -
和平之翼代码生成器SHCEU 4.0.0千年隼发布Beta3版,恢复支持Oracle数据库
2019-05-14 10:30 399和平之翼代码生成器SHCE ... -
和平之翼代码生成器在线问答文档,欢迎追加问题。
2019-04-26 21:13 320在线问答 项目地址:ht ... -
和平之翼代码生成器SMEU版4.0.0 Beta3版宝船已发布
2019-01-13 22:06 425和平之翼代码生成器SMEU ... -
代码生成器技术乱弹十二,枪,T型车到代码生成器,模板法的工业魔
2018-11-06 21:19 0在《产生式编程》一书中,作者带我们重述历史,去探寻自动 ... -
代码生成器技术乱弹十,动词与多维空间,动词变格理论简述
2018-11-05 20:53 816在动词算子式代码生成器中,有若干遵循的基本设计准则,简 ... -
和平之翼代码生成器SMEU版 3.2.0 Beta3 已发布,欢迎使用
2018-10-07 16:07 387目前和平之翼代码生成器SMEU 3.2版乌篷船正在Be ... -
代码生成器技术乱弹十一,伽罗华理论与代码生成器
2018-09-30 22:52 717最近,看到了最悲剧的天才数学家伽罗华的际遇及其群论的思 ... -
和平之翼代码生成器SHCEU 3.2版 千年隼 正在火热开发
2018-07-17 10:39 816和平之翼代码生成器SHCEU 3.2版 千年隼 正在火热开发 ... -
给代码生成器原理探究者和学习者的圣诞礼物:最早的无垠式代码生成器的完整版本0.6.5
2017-12-24 21:38 523给代码生成器原理探究者和学习者的圣诞礼物:最早的无垠式代码生成 ... -
无垠式代码生成器最新功能与文档增强版0.7.22
2016-11-03 11:19 502无垠式代码生成器最新功能与文档增强版0.7.22 下载请去:h ... -
InfinityGPGenerator无垠式代码生成器0.7.16代码精修版
2016-01-24 16:10 667本版是Java通用代码生成器InfinityGPGenerat ... -
InfinityGPGenerator无垠式通用目的Java代码生成器
2015-04-21 20:58 5541)支持SimpleJEE和S2SH技术栈 2)支持SGS(标 ... -
Java开源例程ClockSimpleJEE4 0.97 安全增强和架构整理版
2014-07-23 20:29 927以下是readme和release note ClockSi ... -
手工代码生成技术视频
2013-11-07 14:45 790手工代码生成技术可以完成所有领域类的CRUDFL方法。 方式是 ... -
ClockSimpleJEE4开源例程企业考勤系统0.95测试完善版
2013-09-01 21:48 8311)v0.95版本是测试完善版 2)修复了DBConf类的并行 ... -
Java开源企业考勤系统ClockSimpleJEE4预发布版0.9.0
2013-06-10 18:25 3496本例是轻量急速的Java开源企业考勤系统ClockSimple ... -
开源java扫雷游戏JMine 2.0
2008-10-17 16:53 1485JMine2.0 Release Note 1.支持鼠标同时左 ... -
Struts, Hibernate 示例
2008-07-09 14:24 1077Struts, Hibernate 示例 WEB-INF/li ... -
一个简单的Struts, Spring, Hibernate 示例
2008-06-24 15:42 1247一个简单的Struts, Spring, Hibernate ...
相关推荐
在你提供的文件列表中,我们可以看到一系列与PropertyGrid相关的源代码文件,这表明这是一个自定义实现的PropertyGrid控件,可能包含了增强的功能和交互设计。 1. **PropertyGrid.cpp**:这是PropertyGrid控件的...
在Windows Forms(WinForm)开发中,`propertyGrid`控件是一个非常实用的工具,它允许用户以类似于Visual Studio(VS)设计器的方式查看和编辑对象的属性。`propertyGrid`提供了一个直观、易于使用的界面,使得应用...
在.NET Framework中,`PropertyGrid`控件是一个非常强大的工具,用于在用户界面中显示对象的属性,并允许用户进行交互式编辑。这个控件广泛应用于各种应用程序的设置或配置界面,因为它可以自动根据对象的属性生成一...
PropertyGrid控件是.NET框架中一个非常有用的组件,它主要用于展示和编辑对象或类型的属性,类似于Visual Studio .NET中的属性浏览器。控件通过反射技术获取和修改对象的属性,反射是一种在运行时检查和操作类型及其...
Sencha Touch是一个流行的JavaScript库,用于构建高性能、跨平台的触摸友好型移动应用程序。Grid组件在移动应用中常用于展示和操作结构化数据,类似于桌面应用中的表格。 ### Sencha Touch Grid简介 Sencha Touch ...
以下是关于这个函数及其相关知识点的详细说明: 1. **点云数据**:点云是由三维空间中一系列离散点组成的数据集,每个点通常包含XYZ坐标信息,有时还包含颜色、法线等附加信息。它们由激光雷达(LiDAR)、深度相机...
960 Grid System 是一种广泛应用于前端开发的布局框架,由 Nathan Smith 创建,旨在提供一个高效、可重复使用的网格系统,以帮助设计师和开发者快速构建网页界面。这个系统的名称来源于其核心理念:整个页面被分为...
Grid的核心在于`Ext.grid.GridPanel`类及其相关的配置项。 ##### 1. ColumnModel的定义 - **ColumnModel**:用于定义Grid的列布局,指定每一列的标题、数据索引和其他属性。 - 示例代码: ```javascript var cm...
通过以上描述,我们可以理解`gridcolor`在MATLAB绘图中的作用及其使用方法,这有助于我们定制更符合视觉需求的科学图表。对于数据分析和结果展示来说,这样的自定义功能非常实用,能够帮助我们更好地传达信息。在...
下面将详细解释FLEX Data Grid的分页实现及其相关知识点。 1. **什么是Flex Data Grid**: Flex Data Grid是Adobe Flex框架中的一个组件,全称为MX:DataGrid或Spark:DataGrid。它用于展示和操作表格形式的数据,...
本文档旨在为使用 SAP 的 ALV Grid 控制提供一个简洁且实用的参考资料。ALV(Application List Viewer)是一种用于在 SAP GUI 中显示列表数据的强大工具。它允许用户通过高度定制化的界面来呈现复杂的数据结构。本...
以下是对这些文件及其相关知识点的详细介绍: 1. **dhtmlxGrid** dhtmlxGrid是一款强大的JavaScript数据网格组件,它提供了丰富的功能,如数据排序、分页、过滤、编辑等。这个组件可以处理大量数据,并支持多种...
在C# WPF开发中,`PropertyGrid`控件是一个非常实用的工具,它能够以网格形式展示对象的属性,并允许用户进行交互式编辑。在国际化(Internationalization,简称i18n)和本地化(Localization,简称l10n)的场景下,...
`Grid.cpp`和`Grid.h`可能类似,定义了一个或多个与表格相关的类,比如存储和操作表格数据的类,以及用于绘制表格单元格的方法。 在实际使用这个自定义表格类时,开发者需要理解`Grid`类如何存储和管理数据,以及`...
在本文中,我们将深入探讨"Ext表格列锁定+多表头插件"这一主题,它在Ext3.4版本中的实现及其相关技术。这个插件主要用于改进Ext Grid的用户体验,特别是处理大量数据时,通过列锁定和多表头功能,使得用户能够更有效...
以下是对这个项目及其相关知识点的详细解读。 首先,商品分类展示的核心在于数据结构的设计与管理。在JavaScript中,这通常涉及到对象或数组的组织。商品类别可能以树形结构存储,每个节点代表一个类别,包含子类别...
《Grid and Cloud Database Management》是一本对于从事信息技术、特别是专注于数据库管理和云计算领域的专业人士非常有价值的参考书。通过阅读本书,读者不仅可以获得关于网格和云计算环境下数据库管理的基础知识,...
在这个过程中,`libaio`(Library for Asynchronous I/O)是一个必要的组件,它为应用程序提供了直接内存访问,以提高I/O性能。本文将详细介绍`libaio`及其在Oracle 11g R2安装过程中的作用。 首先,`libaio-0.3....
2. F4按钮和事件处理:在ALV Grid中,F4按钮是一个标准功能,用于提供一个快捷方式来选择或查找值。当用户在ALV Grid中的某个字段按下F4键时,SAP系统会触发一个事件处理程序来响应这个操作。处理程序会打开一个弹出...
3. TajikistanEVC:这个文件名暗示了它是关于塔吉克斯坦的高程分类数据,可能是一个栅格数据文件,如TIFF或GRID格式,提供了整个国家的高程信息,将地理空间位置与特定的海拔值对应起来。这样的数据可用于生成地形图...