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表格控件

 Field Summary
string  select
表格中下拉选择
string  CurrentPage
当前页码
string  billfilter
grid过滤条件
string  button
单元格按钮
string  CurrentRowId
当前行ID
string  checkedRowIds
所有选中行的ID(多选状态下)

 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()
获取数据总页数

 

 Event Summary
  beforeInsert
插入数据之前事件
  afterInert
插入数据之后事件
  beforeSave
保存数据之前事件
  afterSave
保存事件之后事件
  beforeDelete
删除数据之前事件
  afterDelete
删除数据之后事件
  beforeRefresh
刷新数据之前事件
  afterRefresh
刷新数据之后事件
  onselected
行单击事件
  ondbclick
行双击事件
  griddbclick
双击行(非编辑状态)过时
  onRowInit
数据行初始化事件
  dataValueChanged
值改变事件
  onchecked
选择事件(多选时)
  oncheckAll
全选事件
  onuncheckAll
全选取消时事件

 


 Class Detail
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);并非初始化方法,可根据业务需求改变静态过滤条件。