Class tlv8.createGrid
Grid表格组件
| Class Summary |
| Grid |
tlv8.createGrid(div, labelid, labels, labelwidth, dataAction,witdh, height, data, limit, where, billdataformid, billcell,datatype, master, showindex,sql,fixColumn)
Grid表格控件 |
| Method Summary |
| void |
settoolbar(insertItem, saveItem, refreshItem, deleteItem)
设置表格工具栏 |
| void |
setValueByName(name, param, value)
根据列名设置值 后面的param参数可以是rowid 也可以是index |
| string |
getValueByName(name, param)
根据列名获取值 后面的参数可以是rowid 也可以是index |
| void |
refreshData(filter)
表格刷新 |
| void |
seteditModel(editModel)
设置表格是否可编辑 |
| boolean |
saveData()
表格数据保存 |
| void |
insertData()
新增表格行 |
| boolean |
deleteData()
删除选中行 |
| number |
getLength()
获取grid总行数 |
| void |
setExcelimpBar(param)
设置Excel导入 |
| void |
setExcelexpBar(param)
设置Excel导出 |
| string |
getCurrentRowId()
获取当前行ID |
| string |
getRowId(index)
获取指定行的ID |
| string |
getIndex(cId)
获取指定行的行号 |
| string |
getCheckedRowIds()
获取选中行的ID |
| void |
insertSelfBar(label, width, action, img)
自定义按钮 |
| number |
getgridRelationIndex(relation)
根据列名获取列的序号 |
| void |
setrowState(rowid, state)
设置某行的状态 |
| void |
addFooterrow(cells)
grid末尾添加自定义行(可用作合计行) |
| void |
setRequired(cellName)
设置单元格必填 |
| void |
setSQL(sql)
查询sql 查询动作为getGridActionBySQL时使用 |
| void |
getgridRelationIndex(relationName)
获取列的序号 |
| void |
quickSearch(text)
快速查询 |
| void |
checkAll()
全部选中(grid行为多选时) |
| void |
uncheckAll()
全部取消选中(grid行为多选时) |
| string |
locate(relation,value)
查找列值对应的行ID |
| void |
fixTable(obj)
重新调整列表 |
| void |
setFixColumn(num)
设置grid锁定列数 |
| void |
setStaticFilter(filter)
设置静态过滤条件 |
| void |
toPage(page)
跳到指定的页 |
| void |
firstPage()
第一页 |
| void |
previousPage()
上一页 |
| void |
nextPage()
下一页 |
| void |
lastPage()
最后一页 |
| number |
getPages()
获取数据总页数 |
Grid tlv8.createGrid(div, labelid, labels, labelwidth, dataAction,witdh, height, data,
limit, where, billdataformid, billcell,datatype, master, showindex,sql,fixColumn)
Grid表格组件
Parameters:
div
{string}
[required]用于显示表格的DIV标签
labelid
{string}
[required]需要绑定到表格的字段;master_check多选框
labels
{string}
[required]表头显示的字段名
labelwidth
{string}
[required]表格列宽
dataAction
{object}
[required]表格动作({queryAction:查询动作;savAction:保存动作;
deleteAction:删除动作})
witdh
{string}
[required]表格宽度
height
{string}
[required]表格高度
data
{
Data}
[required]数据源
limit
{number}每页显示行数
where
{string}过滤条件
billdataformid
{string}主从设置:指定主表的formid
billcell
{string}外键字段名
datatype
{string}绑定列的字段类型
字段类型
{string,number,year,yearmonth,month,date,datetime,ro,html:reader,select:id,button:action,checkBox:map,radio:map}
* //year,yearmonth,month 对应数据字段为字符型
* //html:reader 自定内容类型 reader为读取值的js函数; 函数reader(event) event有rowid、value
* //ro为只读列
* //select:id{下拉选择类型 id为下拉组件id}
* //button:action为按钮类型(action为点击按钮时的动作 类型为js function)
* //checkBox:map 单选类型 map为多选内容k为值,v为项显示内容map{k,v}
* //radio:map 多选类型 map为选择内容 k为值,v为项显示内容map{k,v}
master
{string}是否多选("true":多选;"false":不多选)
showindex
{string}是否序号(列No:序号;"true":有序号;"false":无序号)
sql
{string}查询语句 (省略:标准grid;"select * from tabl":查询结果列表 用sql时不能编辑)
fixColumn
{number}固定列的数量 被固定列在横向滚动时会一直保持位置 效果类似excel的锁定列
Returns:
{grid}
Example:
<div id="deatail_0" width="100%" / >
var data = new
tlv8.Data();
data.setTable("TMJ_TEST");
data.setDbkey("tmjcrm");
var det = document.getElementById("deatail_0");
var labelid = "No,fName,fSex,fTel,fBirthday,fLike";
var labels = "No.,姓名,性别,电话,出生日期,爱好";
var datatype ="ro,string,string,string,datetime,string";
var labelwidth = "40,80,60,80,80,80";
var dataAction = {
"queryAction" : "getGridAction",
"savAction" : "saveAction",
"deleteAction" : "deleteAction"
};
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
Field Detail
{string}select
[attribute]表格下拉选择
Example:
var datatype ="ro,select:test1,string,string,datetime,string";
//定义grid的数据类型select:test1(select:下拉选择框的ID)
//实现grid编辑状态下该列的下拉选择
<select id="test1" style="display:none;width:100%">
<option value="男">男</option>
<option value="女">女</option>
</select>
{string}button
[attribute]单元格按钮
Example:
var datatype ="button:btnAction";
//button:action为按钮类型(action为点击按钮时的动作 类型为js function)
//实现grid编辑状态下单元格按钮触发事件
function btnAction(){
//单元格按钮事件写在这里
}
{string}CurrentPage
[attribute]当前页码
Example:
var page = maingrid.grid.CurrentPage;
{string}billfilter
[attribute]grid过滤条件
Example:
var billfilter = maingrid.grid.billfilter;
{string}CurrentRowId
[attribute]当前行ID
Example:
var currentId = maingrid.grid.CurrentRowId;
{string}checkedRowIds
[attribute]所有选中行的ID
Example:
var mSelIds = maingrid.grid.checkedRowIds;
Method Detail
void
settoolbar(insertItem, saveItem, refreshItem, deleteItem)
设置表格工具栏
Parameters:
insertItem
{boolean}
[required]新增
saveItem
{boolean}
[required]保存
refreshItem
{boolean}
[required]刷新
deleteItem
{boolean}
[required]删除
Returns:
{void}
Example:
<div id="deatail_0" width="100%" / >
var det = document.getElementById("deatail_0");
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
maingrid.grid.settoolbar(false, false, true, false);
重写新增事件
document.getElementById(det.id + "_insertItem").onclick = function(){
//你的自定义新增事件写在这里
};
重写保存事件
document.getElementById(det.id + "_saveItem").onclick = function(){
//你的自定义保存事件写在这里
};
重写刷新事件
document.getElementById(det.id + "_refreshItem").onclick = function(){
//你的自定义刷新事件写在这里
};
重写删除事件
document.getElementById(det.id + "_deleteItem").onclick = function(){
//你的自定义删除事件写在这里
};
void
setValueByName(name, param, value)
根据列名设置值 后面的param参数可以是rowid 也可以是index
Parameters:
name
{boolean}
[required]列名
param
{boolean}
[required]行ID/行号
value
{boolean}
[required]值
Returns:
{void}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
maingrid.grid.setValueByName("fName", "6307123710684606509L", "张三");
string
getValueByName(name, param)
根据列名获取值 后面的参数可以是rowid 也可以是index
Parameters:
name
{boolean}
[required]列名
param
{boolean}
[required]行ID/行号
Returns:
{string}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
var value=maingrid.grid.getValueByName("fName", "6307123710684606509L");
void
griddbclick(event)
行双击(非编辑状态)
Parameters:
event
{object}
[required]回调对象
Returns:
{void}
Example:
<div id="cusomerSurvey-grid-view" ondbclick="griddbclick" / >
//在显示Grid的Div中注册grid的行双击事件(事件名不加括号)
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
function griddbclick(event){
var rowid = event.CurrentRowId;
tlv8.portal.openWindow("客户信息详细","/JBIZ/TMJCRM/custormer/create-
customer-info.html?rowid="+rowid);
}
void
refreshData(filter, isconfirm)
刷新表格
Parameters:
filter
{string}过滤条件
isconfirm
{boolean}刷新是否提示true|false<默认true>
Returns:
{void}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
var filter="FCUSTORMERNAME like '%"+trim(srFCUSTORMERNAME)+"%' ";
maingrid.grid.refreshData(filter);
void seteditModel(editModel)
设置表格是否可编辑
Parameters:
editModel
{boolean}编辑状态 true, false
Returns:
{void}
Example:
currentgrid.seteditModel(true); //设置为可编辑
void saveData(event, gridsavecalback)
表格数据保存
Parameters:
event
{Event}
gridsavecalback
{function}保存后回调函数
Returns:
{void}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
maingrid.grid.saveData();
void insertData(num_d)
新增数据行
Parameters:
num_d
{boolean}true向下新增|false向上新增
Returns:
{void}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
maingrid.grid.insertData();
void deleteData(deleteRowID, isConfirm, isRefresh)
删除选中行
Parameters:
deleteRowID
{string}需要删除的行ID
isConfirm
{boolean}删除提示true|false<默认true>
deleteRowID
{boolean}删除后刷新数据 true|false<默认false>
Returns:
{void}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
maingrid.grid.deleteData();
number
getLength()
获取grid总行数
Returns:
{number}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
var num=maingrid.grid.getLength();
void
setExcelexpBar(param)
设置Excel导出
Parameters:
param
{boolean}
[required]是否从Excel导出
Returns:
{void}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
maingrid.grid.setExcelexpBar(true);
void setExcelimpBar(param)
设置Excel导入(导入的Excel结构和grid的结构一样)
Parameters:
param
{boolean}[required]是否从Excel导入
Returns:
{void}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
maingrid.grid.setExcelimpBar(true);
注:当设置为true时,需要配置impConfirm.xml
将impConfirm.xml文件放在功能html文件同目录下,然后根据功能具体情况配置impConfirm.xml文件。
void
onselected()
行单击事件
Returns:
{void}
Example:
<div id="div_custormerSurvey_problem" onselected='selectedItem()'></div>
//在显示Grid的Div中注册grid的行选中事件
function selectedItem(){
//你的grid行选中事件写在这里
}
string
getCurrentRowId()
获取当前行ID
Returns:
{string}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
var currentRowId=maingrid.grid.getCurrentRowId();
string
getRowId(index)
获取指定行的ID
Parameters:
index
{number}
[required]行号
Returns:
{string}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
var rowId=maingrid.grid.getRowId(2);
string
getIndex(cId)
获取指定行的行号
Parameters:
index
{cId}
[required]行ID
Returns:
{string}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
var rowId=maingrid.grid.getIndex("dsfkjdhslfjlkdsjf");
string
getCheckedRowIds()
获取选中行的ID
Returns:
{string}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
var checkedIds=maingrid.grid.getCheckedRowIds();
void insertSelfBar(label, width, action, img)
自定义按钮
Parameters:
label
{string}[required]标题
width
{number}[required]宽度
action
{string}[required]动作(js函数)
img
{string}[required]图片的地址
Returns:
{void}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
maingrid.grid.insertSelfBar("重置密码","30px","resetPassword()",
"../../comon/image/toolbar/action/enable.gif");
另:工具条扩展:document.getElementById('"+div.id+"-grid-item').innerHTML = "";嵌入自定义工具条内容
* // 自定义按钮{标题,宽度,动作(js 函数),图片}
number
getgridRelationIndex(relation)
根据列名获取列的序号
Parameters:
relation
{number}
[required]查询的列名
Returns:
{number}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
var index=maingrid.grid.getgridRelationIndex("sName");
void
setrowState(rowid, state)
设置某行状态
Parameters:
rowid
{number}
[required]行ID
state
{number}
[required]状态("readonly")
Returns:
{void}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
maingrid.grid.setrowState("readonly");
void
addFooterrow(cells)
添加统计行
Parameters:
cells
{string}
[required]统计行插入的内容,单元格跨行加“:colspan(1)”
Returns:
{void}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
maingrid.grid.addFooterrow("<div>合计</div>:colspan(3),ddd,eee,fff,ggg,hhh,iii,jjj");
void
setRequired(cellName)
设置单元格必填
Parameters:
cellName
{string}
[required]需要设置必填的列名,多个用逗号分隔
Returns:
{void}
Example:
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
maingrid.grid.setRequired("fName")
void
setSQL(sql)
设置单元格必填
Parameters:
sql
{string}
grid数据加载使用的sql语句 查询动作为getGridActionBySQL时使用
Returns:
{void}
Example:
var dataAction = {
"queryAction" : "getGridActionBySQL",
"savAction" : "",
"deleteAction" : ""
};//
sql形式的列表作为数据报表使用,数据不能提交。
var maingrid = new tlv8.createGrid(det, labelid, labels, labelwidth,
dataAction, "100%", "100%", data, 10,"","","",datatype,"false","true");
maingrid.grid.setRequired("fName")
void
beforeInsert()
插入前执行的动作,在显示grid的div中注册
Returns:
{void}
Example:
<div id="impTest" beforeInsert="bInsert"></div>
function bInsert(){
//自定义插入前动作写在这里
}
void
afterInert()
插入后执行的动作,在显示grid的div中注册
Returns:
{void}
Example:
<div id="impTest" afterInert="fInsert"></div>
function fInsert(){
//自定义插入后动作写在这里
}
void
beforeSave()
保存前执行的动作,在显示grid的div中注册
Returns:
{void}
Example:
<div id="impTest" beforeSave="bSave"></div>
function bSave(){
//自定义保存前动作写在这里
}
void
afterSave()
保存后执行的动作,在显示grid的div中注册
Returns:
{void}
Example:
<div id="impTest" afterSave="fSave"></div>
function fSave(){
//自定义保存后动作写在这里
}
void
beforeDelete()
删除前执行的动作,在显示grid的div中注册
Returns:
{void}
Example:
<div id="impTest" beforeDelete="bDelete"></div>
function bDelete(){
//自定义删除前动作写在这里
}
void
afterDelete()
删除后执行的动作,在显示grid的div中注册
Returns:
{void}
Example:
<div id="impTest" afterDelete="fDelete"></div>
function fDelete(){
//自定义删除后动作写在这里
}
void
afterRefresh()
刷新后执行的动作,在显示grid的div中注册
Returns:
{void}
Example:
<div id="impTest" afterRefresh="fRefresh"></div>
function fRefresh(){
//自定义刷新后动作写在这里
}
void
beforeRefresh()
刷新前执行的动作,在显示grid的div中注册
Returns:
{void}
Example:
<div id="impTest" beforeRefresh="bRefresh"></div>
function bRefresh(){
//自定义刷新前动作写在这里
}
void onRowInit
刷新前执行的动作,在显示grid的div中注册
Returns:
{void}
Example:
<div id="impTest" onRowInit="onRowInitFunction"></div>
function bRefresh(){
//自定义刷新前动作写在这里
}
<script type="text/javascript">
function onRowInitFunction(cgrid,rowObj){
//cgrid当前grid对象
//rowObj当前行对象
}
</script>
void getgridRelationIndex(relationName)
刷新前执行的动作,在显示grid的div中注册
Parameters:relationName 列名
Returns:
{number}
Example:
<script type="text/javascript">
document.getElementById("gridID").grid.getgridRelationIndex("fName");
</script>
void quickSearch(text)
快速查询
Parameters: text 模糊查询的内容
Returns:
{void}
Example:
<script type="text/javascript">
document.getElementById("gridID").grid.quickSearch("test");
</script>
void checkAll()
全部选中
Parameters:
Returns:
{void}
Example:
<script type="text/javascript">
document.getElementById("gridID").grid.checkAll();
</script>
void uncheckAll()
全部取消选中
Parameters:
Returns:
{void}
Example:
<script type="text/javascript">
document.getElementById("gridID").grid.uncheckAll();
</script>
void dataValueChanged
值改变事件
Parameters:
Returns:
{event}
Example:
<div id="gridID"dataValueChanged="dataValueChangedAction">
<script type="text/javascript">
function dataValueChangedAction(event){
//event.olddata //改变前的值
//event.newdata //改变后的值
//event.cellname //值改变的列名
//event.obj //值改变的列(TD)对象
//event.rowid //值改变的行id
event非grid对象
}
</script>
void onchecked
多选选择事件
Parameters:
Returns:
{event}
Example:
<div id="gridID" onchecked="gridonchecked">
<script type="text/javascript">
function gridonchecked(event){
//event.checked //是否选中
//event.rowid //选择的行id
event包含grid的全部方法 可以操作当前gird
}
</script>
void oncheckAll
全选事件
Parameters:
Returns:
{event}
Example:
<div id="gridID"oncheckAll="gridoncheckAll">
<script type="text/javascript">
function gridoncheckAll(event){
//event.checked //是否选中
//event.RowId //grid所有行的id数组
event包含grid的全部方法 可以操作当前gird
}
</script>
void onuncheckAll
全选事件
Parameters:
Returns:
{event}
Example:
<div id="gridID"onuncheckAll="gridonuncheckAll">
<script type="text/javascript">
function gridonuncheckAll(event){
//event.checked //是否选中
//event.RowId //grid所有行的id数组
event包含grid的全部方法 可以操作当前gird
}
</script>
string fixTable
查找关系值对应的行ID
Parameters:
{
fixColumn: 锁定列
fixColumnBack: 锁定列的背景
width: 显示宽度
height: 显示高度
}
Returns:
{void}
Example:
<script type="text/javascript">
$("#"+div.id+"_grid_label").fixTable({
fixColumn: grid.fixColumn || 0,// 固定列数
fixColumnBack: grid.fixColumnBack || "#ccc",// 固定列数
width: $("#"+div.id+"_body_layout").width(),// 显示宽度
height: $("#"+div.id+"_body_layout").height()// 显示高度
});
</script>
string locate
查找关系值对应的行ID
Parameters:
relation 查找字段
value 查找的值
Returns:
{rowid} 返回字段值对应的行id没有查到时返回“”;空字符串值
Example:
<script type="text/javascript">
var cvRowId = document.getElementById("gridID").grid.locate("fCode","TEST");
</script>
void setFixColumn
设置静态过滤条件
Parameters:
num 指定锁定的列数
Returns:
{void}
Example:
<script type="text/javascript">
currentgrid.setFixColumn(3);
currentgrid.setFixColumnBack("#eee");//设置锁定列的背景颜色
</script>
void setStaticFilter
设置静态过滤条件
Parameters:
filter 过滤条件
Returns:
{void}
Example:
<script type="text/javascript">
var filter = "(SORGID = '" + treeNode.id
+ "' and (SPERSONID is null or SPERSONID='')) or("
+ " SPERSONID = '" + treeNode.id + "')";
currentgrid.setStaticFilter(filter);
</script>
此方法设置的过滤条件不会被刷新条件冲掉,有静态过滤条件时,刷新条件和静态过滤条件同时生效。
setStaticFilter(filter);并非初始化方法,可根据业务需求改变静态过滤条件。