MulLine.js 使用说明
2016-06-28 16:19
190 查看
MulLine.js 使用说明
具体描述...
3
一 约定和声明...
3
二 基础特性:...
4
1如何初始化MulLine (含属性说明)...
4
2 如何在JavaScript中给MulLine赋值...
5
3 如何在JavaScript中从MulLine取值...
5
4 如何在JSP中得到MulLine中的值(必须提交页面)...
5
5 如何在JSP中给MulLine赋值...
6
6 如何添加一行...
6
7 如何删除一行...
6
8 如何删除所有行...
7
9 如何删除所有空行...
7
10 如何隐藏或显示”+”和”--“标记...
7
11 如何锁定或解锁”+”和”--“标记...
7
12 如何隐藏一列 (不鼓励使用该方法:显示效果不好)7
13 如何得到行数和列数...
8
14 如何设置某一列的初始化值...
8
15 如何设置在页面上的显示宽度...
8
16如何设置使指定行的某一列得到焦点...
9
17 如何判断指定行的某一列是否得到焦点...
9
三 中级特性:...
9
1 如何使用CheckBox 选项框...
9
1.1 如何初始化CheckBox 选项框...
9
1.2 如何判断该行CheckBox 选项框被选中...
9
1.3 如何选中或不选中所有行的CheckBox选项框...
10
1.4 如何删除选中CheckBox 选项框的所有行...
10
1.5 如何选中指定行的CheckBox 选项框...
10
2 如何使用 Radio 单选框...
10
1.1 如何初始化Radio 单选框...
10
2.2 如何判断该行的Radio 单选框被选中...
11
四 高级特性:...
11
1 如何在MulLine中添加代码选择功能(即双击弹出选择下拉框)11
2如何在MulLine中添加代码选择功能(即双击弹出选择下拉框,从前端自己传入数据)13
3 如何在MulLine中添加字段数据校验功能...
15
4 如何在MulLine中添加双击相应事件,响应自己编写的JS函数...
15
5 如何在MulLine中单击CheckBox时响应开发人员外部编写的JS函数...
16
6 如何在MulLine中单击RadioBox时响应开发人员外部编写的JS函数...
18
7 如何在MulLine中单击“+”按钮和 “–”号按钮时响应开发人员外部编写的JS函数...
19
8 如何在分页显示数据时,使后续页的MulLine中的显示序号与纪录数一致...
20
9 如何在使用代码选择功能时,设置弹出的选择下拉框的宽度...
21
10如何在使用代码选择功能时,强制刷新数据源...
21
11如何在查询时使设置的代码选择列将编码显示为对应的汉字...
21
五 错误描述和诊断...
21
1 如果IE弹出对话框:没有该对象或未知的对象或者对象没有该方法...
21
2 如果弹出对话框:MulLine.js中某某方法出现异常...
21
3如果弹出对话框:MulLinejs中某某方法中指定了错误的列(或者行)...
22
4如果出现其它错误信息...
22
(2) 在后续的所有说明中,均假定MulLine的对象名为:ObjGrid ;该MulLine对象所在的表单名为:fm
(3) 后续用到的行和列都是从0行0列开始。和数组是一致的(注:除非有特殊声明)
(4) 所有调用方法和属性的名字遵循命名规则:首字母小写,后续单词首字母大写。
方法如:clearData,setRowColData,lock,unLock
属性如:mulLineCount,canAdd , locked
(5) 具体实例:请看Z:\resource\模版程序\testMulLine下的示范待码)
运行:http://hostName:8900/ui/testMulLine/mulineTest.html(hostName是主机名)
(6) 高级特性中,均借助于外部函数,必须包含相应的外部文件
<span id="spanObjGrid "></span> 其位置放在表单fm中
id名称必须是:span+MulLine的对象名(这里是ObjGrid)
(2) 在JS文件中(如xxxInit.js文件)的JavaScript函数中如下设置
假定产生3行两列的MulLine对象
<scriptlanguage="JavaScript">
function initObjGrid() //函数名为init+MulLine的对象名ObjGrid
{
var iArray = new Array(); //数组放置各个列
try
{
iArray[0]=new Array();
iArray[0][0]="序号"; //列名(序号列,第1列)
iArray[0][1]="30px"; //列宽
iArray[0][2]=10; //列最大值
iArray[0][3]=0; //1表示允许该列输入,0表示只读且不响应Tab键
// 2 表示为容许输入且颜色加深.
iArray[1]=new Array();
iArray[1][0]="示范列1"; //列名(第2列)
iArray[1][1]="30px"; //列宽
iArray[1][2]=10; //列最大值
iArray[1][3]=0; //是否允许输入,1表示允许,0表示不允许
//后续可以添加N列,如上设置
//生成对象区,规则:对象名=new MulLineEnter(“表单名”,”对象名”);
ObjGrid= new MulLineEnter( "fm" , "ObjGrid" );
//设置属性区 (需要其它特性,在此设置其它属性)
ObjGrid.mulLineCount = 3; //行属性:设置行数=3
ObjGrid.displayTitle =1; //标题属性:1显示标题 (缺省值) ,0隐藏标题
//对象初始化区:调用对象初始化方法,属性必须在此前设置
ObjGrid.loadMulLine(iArray);
}
catch(ex)
{ alert(ex); }
}
</script>
上面是MulLine的初始化的基本用法,如果用到其他功能,请参阅该功能的详细说明,会有一些相关的初始化的附加设置。
参数为:行,列,值 ;返回值为真假
如;ObjGrid. setRowColData(0,1,”赋给第0行第1列的值”);
注意:是从0行0列开始。因此,我们认为0行是第0行,0列是第0列
注意:第3个参数,value如果不是变量,请用引号扩住
注意:如果程序弹出对话框:提示setRowColData时指定了错误的行(或列),那么意味着你在赋值时指定的行或列超出了范围(即小于0或者大于行数或列数)
注意:请不要给0列赋值,因为是序号列,会自行变化
使用MulLine对象的getRowColData(row,col)方法
参数为:行,列; 返回值:指定行和列的值
如:var value=ObjGrid. getRowColData(0,1);
注意:是从0行0列开始。因此,我们认为0行是第0行,0列是第0列
注意:如果程序弹出对话框:提示getRowColData时指定了错误的行(或列),那么意味着你在取值时指定的行或列超出了范围(即小于0或者大于行数或列数)
注意:可以得到0列(序号列)的值
(2)取出指定的某一行的值
使用MulLine对象的getRowData(row) 法方
参数为:行号 ; 返回值:指定行的所有值,返回形式为一维数组
如:var iArray=ObjGrid. getRowColData(0);
注意:是从0行开始。因此,我们认为0行是第0行。
注意:如果程序弹出对话框:提示getRowData时指定了错误的行,那么意味着你在取值时指定的行超出了范围(即小于0或者大于行数)
注意:数组iArray值不包括序号列的值。即iArray[0]为该行第1列的值,依次类推。
<%
StringtGridNo[] = request.getParameterValues("ObjGridNo"); //得到序号列的所有值
String tGrid1 [] =request.getParameterValues("ObjGrid1"); //得到第1列的所有值
String tGrid2 [] =request.getParameterValues("ObjGrid2"); //得到第2列的所有值
Int Count = tGridNo.length; //得到接受到的记录数
For(int index=0;index< Count;index++)
{
System.out.println("GridNO="+tGridNo [index]);
System.out.println("Grid 1="+ tGrid1[index]);
System.out.println("Grid 2="+ tGrid2[index]);
}
%>
如果需要处理被选中的纪录(即CheckBox 和Radio 框)请参看中级特性说明
<scriptlanguage="javascript">
parent.fraInterface..ObjGrid.addOne("ObjGrid"); //添加一行,见该方法说明
parent.fraInterface..ObjGrid.setRowColData(行,列,值);
</script>
注意:不要使用parent.fraInterface..fm .ObjGrid方式,否则会报错:没有该对象
注意:在将JSP变量传给setRowColData方法的参数3时,请用引号扩住。
如:“<%=JspValue%>“ ,对于行,列参数不用加引号扩住(数值型)
如:(1 ) ObjGrid.addOne(“ObjGrid”);//注意:有引号
(2 ) 或者 ObjGrid.addOne();
2 在页面上如果”+”号标记存在,单击即可(该”+”号可以隐藏)
2 直接删除任意一行的方法是不对外的,但是你可以查阅:
à如何删除所有行
à如何删除所有空行
à如何删除选中CheckBox 选项框的所有行
请参阅下面相关详细说明
如:(1)ObjGrid. clearData(“ObjGrid”);
(2 ) 或者 ObjGrid. clearData ();
使用方法delBlankLine (“MulLine的对象名”) 或者delBlankLine()
如:(1) ObjGrid. delBlankLine (“ObjGrid”);
(2) ObjGrid. delBlankLine ();
ObjGrid. hiddenPlus=0; //是否隐藏"+"号标志:1为隐藏;0为不隐藏(缺省值)
ObjGrid. hiddenSubtraction=0; //是否隐藏"-"号标志:1为隐藏;0为不隐藏(缺省值)
刷新后将看不到”+”和”--“标记
锁定:使用lock () 方法 如ObjGrid. lock ();
解锁:使用unLock () 方法 如ObjGrid. unLock ();
iArray[1]=new Array();
iArray[1][0]="示范列";
iArray[1][1]="0px"; // à你可以将列宽设为0,该列就隐藏了
iArray[1][2]=100;
iArray[1][3]=3; //à你还可以设置选项:0和1表示是否容许输入
2表示代码选择,3表示这一列是隐藏的,
你可以放一些自己想放的数据在这列里
上面两种方法都可以
如:var rowNum=ObjGrid. mulLineCount ; //行数
varcolNum=ObjGrid. colCount ; //列数
注意:请不要通过这种方式更改行数和列数。
代码中加入如下:
iArray[1][14]=”初始化值”;
注意:序号必须是14,该项设置是独立的,和其他设置是不影响的。
页面下没有左右可移动的滚动条时的页面中放置MulLine的框架的宽度
(1) 在一行中放置一个MulLine
如果在初始化时它的各个列宽的和小于页面宽度,那么该MulLine的各个列宽的实际大小将按照下面公式得到:
实际列的宽度=初始设置列的宽度*页面宽度/初始设置列的宽度之和
这样就会填充满整个页面的宽度。
如果在初始化时它的各个列宽的和大于页面宽度,那么将会按照初始化设置的宽度显示。当然,页面下方会出现左右可以移动的滚动条。
(2) 在一行中放置两个MulLine
请在每个MulLine初始化时设置属性:ObjGrid.mulLineNum=2,
即表明同一行有2个MulLine,这样当2个MulLine的实际宽度小于页面的宽度时,就可以在页面中正常显示(不出现滚动条),而不会出现第一个MulLine的宽度填充整个页面的宽度,第二个MulLine需要移动滚动条才能看到的情况。
当然,如果两个MulLine的宽度和大于页面的宽度,那么是会出现滚动条,并且借助于滚动条才能看到两个MulLine。
(3) 在一行中放置多个MulLine
道理和(2)是一样的。
参数说明 :Row 行号,注意从 0行开始,不能为空 。
Col 列号,注意从0列开始,但是序号列为0列。可以为空。
如果为空,自动设置为1 。
cObjInstance MulLine对象名,一般设为空。
ObjGrid.canChk =1; // 1为显示CheckBox列,0为不显示 (缺省值)
参数row为行数(从0行开始)返回true (选中) 或者 false(未选中)
循环处理,即可判断所有行的选中状态。
注意:如果指定了错误的行(<0或者 >=总行数)
弹出错误信息:在MulLine.js中指定错误的行
(2)在JSP中如下处理:
String tChk[] =request.getParameterValues("InpObjGridChk");
//参数格式=” Inp+MulLine对象名+Chk”
For(intindex=0;index<tChk.length;index++)
{
if(tChk[index].equals("1"))
System.out.println(“该行被选中”);
if(tChk[index].equals("0"))
System.out.println(“该行未被选中”);
}
选中它,则所有行的CheckBox被选中,否则,都不选中
程序中可以使用3个方法:
ObjGrid.checkBoxAll ()--选中所有行
ObjGrid. checkBoxAllNot () --撤销所有行选中状态
ObjGrid. checkAll ()--如果不处于选中状态,那么选中所有行;否则撤销所有行
如:(1) ObjGrid.delCheckTrueLine("ObjGrid");
(2) 或者ObjGrid.delCheckTrueLine ();
所有该Grid处于选中状态的行都被删除
如:(1) ObjGrid. checkBoxSel (1);
使第一行的checkBox()被选中
ObjGrid.canSel =1; // 1 显示 ;0 隐藏(缺省值)
使用方法:getSelNo()
如:ObjGrid.getSelNo () 内部循环判断所有行
返回被选中的行的行号。
注意:行号是从1开始,和数组是不一样的。
如果没有选中行,返回值是0。
所以和setRowColData()或getRowColData()使用时要小心
(2 ) 在JSP中如下处理:
String tRadio[] =request.getParameterValues("InpObjGridSel");
//参数格式=” Inp+MulLine对象名+Sel”
For (int index=0; index< tRadio.length;index++)
{
if(tRadio[index].equals(“1”))
System.out.println(“该行被选中”);
if(tRadio[index].equals(“0”))
System.out.println(“该行未被选中”);
}
<SCRIPT src="src="../common/javascript/CCodeOperate.js"></SCRIPT>一起使用
(1)如果仅仅是MulLine的某一列需要代码选择功能,那么
首先在使用MulLine的文件中(如:xxxInput.jsp)必须有如下一行:
<spanid="spanCode" style="display: none; position:absolute;slategray"></span>
然后在初始化时设置该列时如下:(参见MulLine的初始化)
iArray[1][0]="性别"; //列名
iArray[1][1]="100px"; //列宽
iArray[1][2]=100; //列最大值
iArray[1][3]=2; //是否允许输入,1表示允许,0表示不允许,2表示代码选择
iArray[1][4]="Sex"; //是否引用代码: null或者""为不引用
说明:
iArray[1][3]=2; 则该列的每一个输入框的样式都是代码选择的风格
iArray[1][4]="Sex"; 设置要引用的代码
(2)如果想在某一列实现代码选择的同时,该代码的其它信息显示在其他指定列上
那么在MulLine初始化时,如下设置列数组
iArray[1][0]="区站代码";
iArray[1][1]="100px";
iArray[1][2]=100;
iArray[1][3]=2; //2表示代码选择
iArray[1][4]="Station"; //引用代码:
iArray[1][5]="1|2"; //引用代码对应第几列,'|'为分割符
iArray[1][6]="0|1"; //上面的列中放置引用代码中第几位值
iArray[2]=new Array();
iArray[2][0]="区站名称";
iArray[2][1]="100px";
iArray[2][2]=100;
iArray[2][3]=1; //是否允许输入,1表示允许,0表示不允许
说明:
(a)iArray[1][4]="Station"; 即该列要引用区站代码
(b)iArray[1][5]="1|2"; 引用代码信息分别放在第1列和第2列,'|'为分割符
iArray[1][6]="0|1"; 引用代码数组的第0项(区站代码)放在第1列
引用代码数组的第1项(区站名称)放在第2列
对多列显示代码选择:这两项必须同时存在,缺少任何一项。都认为无效
这两项中的数字是上下对应关系,
即Muline第1列àCode第0项
Muline第2列àCode第1项
(c)推荐:上下两项中的数字数目保持一致,
如:1|2 对应0|1 ;2|3|4 对应1|3|4 左右数目相等
但是:如果象:
iArray[1][5]="1|2";
iArray[1][6]="0";
或者
iArray[1][5]="1";
iArray[1][6]="0|1";
这是不会出错的,将按照最少原则处理,即还是对应关系,但是多出来的项
将会被忽略,或者表格中填充undefine 所以建议你还是按照规范书写
(d) 排在首位的列号就是代码选择框在页面上要显示的列处,如:
如果 iArray[1][5]="1|2"; 首位是1 ,则双击当前列(即第1列),那么代码选择框就会在第1列位置处显示。
如果 iArray[1][5]="2|1"; 首位是2 ,则双击当前列(即第1列),那么代码选择框就会在第2列位置处显示。
推荐将首位设置为你要选择代码的列号。当然,设置成其他列号是不会有影响的,这可以由你灵活掌握
涉及代码选择问题请问杨涛
(e) 扩展功能:如果在显示时要加上限制条件,譬如,当前列的双击弹出代码框的内容
依赖于其它控件或者其他列的值,那么在初始化MulLine时,对要添加限制条件的列增加如下代码:(以MulLine的第1列为例)
如果是根据单独的控件的值判断,那么
iArray[1][15]="控件名称"; //譬如Form中除了MulLine外的其它控件名称
iArray[1][16]="该控件的值"; //可以用fm.all(‘xxx’).value或者固定值或变量传入
如果是多个组合条件,可以先拼成字符串,具体格式请参见showcodelist函数第5个参数的用法。
iArray[1][15]="控件1的名称"; //譬如Form中除了MulLine外的其它控件名称
iArray[1][16]= StrSql;
StrSql = "#1# and 2=#2#"; //因为JS往后台传输的原因,单引号“'”必须用“#”替代,譬如:
iArray[1][15]="Name";
iArray[1][16]= StrSql;
StrSql = "#姓名# and Sex=#性别#";
最后传到后台的语句转换为: ” Name=’姓名’ and Sex=’性别’ “;
如果根据MulLine的某一列的值判断,那么
iArray[1][15]= "列名称"; //要依赖的列的名称
iArray[1][17]="列号"; //该列的列号,
如上即可实现.
如果根据MulLine的某几列的值判断,那么(必须用|分割,且上下数目一致)
iArray[1][15]= "列名称1|列名称2|….."; //要依赖的列的名称
iArray[1][17]="列号1|列号2|….."; //列名称的列号,
如上即可实现.
<SCRIPT src="src="../common/javascript/CCodeOperate.js"></SCRIPT>一起使用
并且在使用MulLine的文件中(如:xxxInput.jsp) 必须有如下一行:
<span id="spanCode" style="display: none; position:absolute;slategray"></span>
(1)如果仅仅是MulLine的某一列需要代码选择功能,那么初始化时设置该列时如下:(参见MulLine的初始化)
iArray[1][0]="性别"; //列名
iArray[1][1]="100px"; //列宽
iArray[1][2]=100; //列最大值
iArray[1][3]=2; //2表示代码选择(即样式为代码选择)
iArray[1][10]="CodeName"; //引用代码:"CodeName"为传入数据的名称
iArray[1][11]="CodeContent"; //"CodeContent" 是传入要下拉显示的代码
说明:
iArray[1][3]=2; 则该列的每一个输入框的样式都是代码选择的风格
iArray[1][10]=" CodeName "; 设置要引用的代码名称,在页面上最好唯一
iArray[1][11]=" CodeContent "; 设置要引用的代码(有格式要求)
例如:
iArray[1][10]=" CodeTest "; 名字最好有唯一性
iArray[1][11]= "0|^1|^2|^3" ; 以^ 分割每个记录,以 | 分割每个纪录中的字段
如 "0|^1|第一个|^2|第2个|^3|第3个" ;
或者 "0|^1|第一个|记录|^2|第2个|记录|^3|第3个|记录" ;
(2)如果想在某一列实现代码选择的同时,该代码的其它信息显示在其他指定列上
那么在MulLine初始化时,如下设置列数组
iArray[1][0]="测试代码";
iArray[1][1]="100px";
iArray[1][2]=100;
iArray[1][3]=2; //2表示代码选择
iArray[1][10]="CodeName"; //引用代码:"CodeName"为传入数据的名称
iArray[1][11]="CodeContent";//"CodeContent" 是传入要下拉显示的代码
iArray[1][12]="1|2"; //引用代码对应第几列,'|'为分割符
iArray[1][13]="0|1"; //上面的列中放置引用代码中第几位值
说明:
(a)iArray[1][12]的格式为 ”列号1|列号2|……” ,如:
iArray[1][12]="1|2"; 引用代码信息分别放在第1列和第2列,'|'为分割符
必须注意的是:”列号1” 必须是当前列的列号。后面的 “列号2|……”等无限制
iArray[1][13]的格式为 ”字段1|字段2|……” ,如:
iArray[1][13]="0|1"; 引用代码数组的第0项(即纪录的第一个字段)放在第1列
引用代码数组的第1项(即纪录的第二个字段)放在第2列
对多列显示代码选择:这两项必须同时存在,缺少任何一项。都认为无效
这两项中的数字是上下对应关系,
即Muline第1列显示CodeData的第0项 字段
Muline 第2列显示CodeData的第1项字段
(b)推荐:上下两项中的数字数目保持一致,
如:1|2 对应0|1 ;2|3|4 对应1|3|4 左右数目相等
但是:如果象:
iArray[1][12]="1|2";
iArray[1][13]="0";
或者
iArray[1][12]="1";
iArray[1][13]="0|1";
这是不会出错的,将按照最少原则处理,即还是对应关系,但是多出来的项
将会被忽略,或者表格中填充undefine 所以建议你还是按照规范书写
(c) 排在首位的列号就是代码选择框在页面上要显示的列处(注意:并且是当前列),如:
如果 iArray[1][12]="1|2"; 首位是1 ,则双击当前列(即第1列)
那么代码选择框就会在第1列位置处显示。
如果 iArray[1][12]="2|1"; 首位是2 ,则双击当前列(即第1列),
那么代码选择框会显示错误!这点和从后台取数据不同,因为ShowCodeListEx代码假定前台的数据存放在传入参数中排在首位的列处,因此会从参数中首位的列号处查找数据源。详情参阅ShowCodeListEx函数(其中Field[0]接受首位列对象)
(d)需要注意的是:数组排序 iArray[1][4]到iArray[1][ 8] 都不能再使用了,格式校验可以使用。
涉及代码选择问题请问杨涛
在初始化MulLine时如下设置列数组:
iArray[1][0]="区站代码";
iArray[1][1]="100px";
iArray[1][2]=100;
iArray[1][3]=2; //2表示代码选择
iArray[1][4]="Station"; //引用代码:
iArray[1][9]="区站代码|code:station"; //检验格式:按区站代码格式检验
{或者iArray[1][9]=” 区站代码|NOTNULL”}
{或者iArray[1][9]=” 区站代码|LEN<6|LEN>8|NOTNULL”}
//即将数组的序号置为
[列数][9]=”该列名称 | 校验类型参数1 [ | 校验类型参数2 | 校验类型参数3…]”
如果检验到错误,会提示:第几行+第几列+错误原因
具体检验格式请参看 VerifyInput 通用录入校验说明文档(著者:胡博)
因为调用VerifyInput的内部函数,所以检验格式是一致的。
注意:检验MulLine中的数据格式请使用MulLine的内部方法checkValue();
使用方法:ObjGrid. CheckValue(“ObjGrid”); (ObjGrid是MulLine对象名)
或者ObjGrid. CheckValue( ); (即无参数)
该列的输入格上双击后可以响应你编写的JS函数。
具体设置如下:
(1)在初始化时
iArray[1]=new Array();
iArray[1][0]="性别";
iArray[1][1]="100px";
iArray[1][2]=100;
iArray[1][3]=1; //是否允许输入,1表示允许,0表示不允许
iArray[1][7]=“functionName” //你写的JS函数名,不加扩号
iArray[1][8]=”[‘str1’,number,……]” //要传入的参数à可以省略该项
说明:
iArray[1][7]=“functionName” 该函数名由你自己定义,不加扩号
iArray[1][8]=”[‘str1’,number,……]” 传递给函数的的第2个参数
规定它为数组格式(用逗号隔开),数组可以同时包括字符串(请加单引号),数字(不加单引号)等,如果没有要传入得参数,该项可以省略。
注意:某一列的设值iArray[1][4],iArray[1][5],Array[1][6] 和iArray[1][7], iArray[1][8]是不能共同存在的。如果同时存在,那么iArray[1][7],iArray[1][8]是无效的,对该列而言
(2)在xxx.js中编写你声明的函,数框架如下:
functionfunctionName (parm1,parm2) //参数名可以是任意的,不限于parm1和parm2
{
//1 内容由你填充,下面只是给出了一些范例
//2 parm1是给定的,表示当前表单中mulLine当前行的spanID
//如果要弹出当前行第1列的值,那么直接如下使用:
alert(fm.all(parm1 ).all(‘ObjGrid1').value );
//利用第二个值
if(parm2!=null&& parm2!=””) //如果第2个参数parm2有效,parm2可以为空
{
var arr= parm2 ; // parm2 是一个数组,可以存放多个要传入的值
var arrlength= arr.length; //得到数组长度
}
}
注意:该函数是绑定到MulLine上的,所以参数1是初始化MulLine时传入的,通过它可以确定当前行的位置,你只要使用即可;参数2可以传入输组,可以为空,如果需要参数2,必须在MulLine中初始化时设置。
的CheckBox上单击时响应你编写的JS函数。
(注意:此时标题栏处会有一个checkBox,它的作用是选中或不选中显示行中的全部checkBox的,对它单独有一个js函数,对应下面的 b 说明)
具体设置如下:(统一约定:ObjGrid 为你定义的MulLine的对象)
(1)在初始化时
ObjGrid. canChk = 1; //选中checkBox 功能,这是前提条件
(a) 针对每行记录前的checkBox而言,如下
ObjGrid. chkBoxEventFuncName =“functionName”//你写的JS函数名,不加扩号
ObjGrid. chkBoxEventFuncParm =”[‘str1’,number,…]” //传入的参数,可以省略该项
说明:
”[‘str1’,number,……]” 是传递给函数名为“functionName”的的第2个参数
规定它为数组格式(用逗号隔开),数组可以同时包括字符串(请加单引号),数字(不加单引号)等,如果没有要传入得参数,该项可以省略。
(b)针对标题栏具有全选功能的checkBox而言,如下:
ObjGrid.chkBoxAllEventFuncName=“functionName2”//JS函数名,不加扩号
(2)在xxx.js中编写你声明的函数,框架如下:
(a) function functionName (parm1,parm2) //参数名可任意取的,不限于parm1和parm2
{
//1 内容由你填充,下面只是给出了一些范例
//2 parm1是给定的,表示当前表单中mulLine当前行的spanID
//判断当前行的checkBox是否被选中,并执行相应的活动
if(fm.all(parm1).all(' InpObjGridChk').value= ='1' )
{
//当前行第1列的值设为:选中
fm.all(parm1).all(' ObjGrid1').value="选中";
}
else
{
fm.all(parm1).all(ObjGrid1).value="没选中";
}
//利用第二个参数parm2 即上面的”[‘str1’,number,……]”
if(parm2!=null&& parm2!=””) //如果第2个参数parm2有效,parm2可以为空
{
var arr= parm2 ; // parm2 是一个数组,可以存放多个要传入的值
var arrlength= arr.length; //得到数组长度
}
}
注意:该函数是绑定到MulLine上的,所以参数1是初始化MulLine时固定传入的,通过它可以确定当前行的位置,你只要使用即可;参数2可以传入输组,可以为空,如果需要参数2,必须在MulLine中初始化时设置。
(b)function functionName2 (parm1,parm2) //参数名可任意,不限于parm1,parm2
{
//1 内容由你填充,下面只是给出了一些范例
//2 parm1是给定的,其值为true orfalse. 表示当前表单中mulLine的实现全选功能的checkBox是否被选中了;parm2 是给定的,代表该checkBox对象,一般不用
//判断当前行的checkBox是否被选中,并执行相应的活动
if ( parm1 )
{
alert ( “ 全部选中” ) ;
//其它操作
}
else
{
alert( “ 全部没选中” ) ;
}
}
注意:该函数是绑定到MulLine上的,所以参数1,2是初始化MulLine时固定传入的,你只要按上面方法使用即可;
的CheckBox上单击时响应你编写的JS函数。
具体设置如下:(统一约定:ObjGrid 为你定义的MulLine的对象)
(1)在初始化时
ObjGrid. canSel = 1; //选中checkBox 功能,这是前提条件
ObjGrid. selBoxEventFuncName =“functionName” //你写的JS函数名,不加扩号
ObjGrid. selBoxEventFuncParm =”[‘str1’,number,…]” //传入的参数,可以省略该项
说明:
”[‘str1’,number,……]” 是传递给函数名为“functionName”的的第2个参数
规定它为数组格式(用逗号隔开),数组可以同时包括字符串(请加单引号),数字(不加单引号)等,如果没有要传入得参数,该项可以省略。
(2)在xxx.js中编写你声明的函数,框架如下:
functionfunctionName (parm1,parm2) //参数名可以是任意的,不限于parm1和parm2
{
//1 内容由你填充,下面只是给出了一些范例
//2 parm1是给定的,表示当前表单中mulLine当前行的spanID
//判断当前行的checkBox是否被选中,并执行相应的活动
if(fm.all(parm1).all(' InpObjGridChk').value= ='1' )
{
//当前行第1列的值设为:选中
fm.all(parm1).all(' ObjGrid1').value="选中";
}
else
{
fm.all(parm1).all(ObjGrid1).value="没选中";
}
//利用第二个参数parm2 即上面的”[‘str1’,number,……]”
if(parm2!=null&& parm2!=””) //如果第2个参数parm2有效,parm2可以为空
{
var arr= parm2 ; // parm2 是一个数组,可以存放多个要传入的值
var arrlength= arr.length; //得到数组长度
}
}
注意:该函数是绑定到MulLine上的,所以参数1是初始化MulLine时固定传入的,通过它可以确定当前行的位置,你只要使用即可;参数2可以传入输组,可以为空,如果需要参数2,必须在MulLine中初始化时设置。
点击 “+”,”--” 号响应你编写的JS函数。
具体设置如下:(统一约定:ObjGrid 为你定义的MulLine的对象)
一 “+”号设置
(1)在初始化时
ObjGrid. hiddenPlus = 0; //显示“+”号按钮,这是前提条件, 也是默认选项,
如果不写ObjGrid. hiddenPlus = 1; 则默认显示“+”号按钮,
ObjGrid. addEventFuncName=“functionName” //你写的JS函数名,不加扩号
ObjGrid. addEventFunParm=”[‘str1’,number,…]” //传入的参数,可以省略该项
说明:
”[‘str1’,number,……]” 是传递给函数名为“functionName”的的第2个参数
规定它为数组格式(用逗号隔开),数组可以同时包括字符串(请加单引号),数字(不加单引号)等,如果没有要传入得参数,该项可以省略。
(2)在xxx.js中编写你声明的函数,框架如下:
functionfunctionName (parm1,parm2) //参数名可以是任意的,不限于parm1和parm2
{
//1 内容由你填充,下面只是给出了一些范例
//2 parm1是给定的,表示当前表单中mulLine当前行的spanID
fm.all(parm1).all(' ObjGrid1').value=" test "; //将当前行的第一列值设为 test
//利用第二个参数parm2 即上面的”[‘str1’,number,……]”
if(parm2!=null&& parm2!=””) //如果第2个参数parm2有效,parm2可以为空
{
var arr= parm2 ; // parm2 是一个数组,可以存放多个要传入的值
var arrlength= arr.length; //得到数组长度
}
}
注意:该函数是绑定到MulLine上的,所以参数1是初始化MulLine时固定传入的,通过它可以确定当前行的位置,你只要使用即可;参数2可以传入输组,可以为空,如果需要参数2,必须在MulLine中初始化时设置。
一 “--”号设置
(1)在初始化时
ObjGrid. hiddenSubtraction= 0; //显示“--”号按钮,这是前提条件, 也是默认选项,
如果不写ObjGrid. hiddenSubtraction = 1; 则默认显示“--”号按钮,
ObjGrid. delEventFuncName=“functionName” //你写的JS函数名,不加扩号
ObjGrid. delEventFunParm=”[‘str1’,number,…]” //传入的参数,可以省略该项
说明:
”[‘str1’,number,……]” 是传递给函数名为“functionName”的的第2个参数
规定它为数组格式(用逗号隔开),数组可以同时包括字符串(请加单引号),数字(不加单引号)等,如果没有要传入得参数,该项可以省略。
单一单引号
(2)在xxx.js中编写你声明的函数,框架如下:
functionfunctionName (parm1,parm2) //参数名可以是任意的,不限于parm1和parm2
{
//1 内容由你填充,下面只是给出了一些范例
//2 parm1是给定的,表示当前表单中mulLine当前行的spanID
fm.all(parm1).all(' ObjGrid1').value=" test "; //将当前行的第一列值设为 test
//利用第二个参数parm2 即上面的”[‘str1’,number,……]”
if(parm2!=null&& parm2!=””) //如果第2个参数parm2有效,parm2可以为空
{
var arr= parm2 ; // parm2 是一个数组,可以存放多个要传入的值
var arrlength= arr.length; //得到数组长度
}
}
注意:该函数是绑定到MulLine上的,所以参数1是初始化MulLine时固定传入的,通过它可以确定当前行的位置,你只要使用即可;参数2可以传入输组,可以为空,如果需要参数2,必须在MulLine中初始化时设置。
如果使用分页查询,请设置属性 mulLineCount
即在MulLine属性区初始化时添加如下属性:
ObjGrid. mulLineCount =10 因为easyQuery中设置每页显示10条,如果easyQuery
中每页显示数改变,此属性必须改变
譬如:每页显示10条纪录,点击下一页,那么序号应该从11开始。如果不设置这个属性,那么还会从1开始。使用中如果有疑问,请查阅easyQuery使用说明或咨询胡博。
iArray[1][18]= width ;//width 为你要设置的弹出选择下拉框的宽度.
iArray[1][19]=1 ; //1是需要强制刷新.
首先需要设置代码选择(从后台取)--见前高级特性1
iArray[1][20]=1 ; //1 为需要在查询时转换代码为汉字.
如果是对象没有该方法,则是方法名写错
具体描述...
3
一 约定和声明...
3
二 基础特性:...
4
1如何初始化MulLine (含属性说明)...
4
2 如何在JavaScript中给MulLine赋值...
5
3 如何在JavaScript中从MulLine取值...
5
4 如何在JSP中得到MulLine中的值(必须提交页面)...
5
5 如何在JSP中给MulLine赋值...
6
6 如何添加一行...
6
7 如何删除一行...
6
8 如何删除所有行...
7
9 如何删除所有空行...
7
10 如何隐藏或显示”+”和”--“标记...
7
11 如何锁定或解锁”+”和”--“标记...
7
12 如何隐藏一列 (不鼓励使用该方法:显示效果不好)7
13 如何得到行数和列数...
8
14 如何设置某一列的初始化值...
8
15 如何设置在页面上的显示宽度...
8
16如何设置使指定行的某一列得到焦点...
9
17 如何判断指定行的某一列是否得到焦点...
9
三 中级特性:...
9
1 如何使用CheckBox 选项框...
9
1.1 如何初始化CheckBox 选项框...
9
1.2 如何判断该行CheckBox 选项框被选中...
9
1.3 如何选中或不选中所有行的CheckBox选项框...
10
1.4 如何删除选中CheckBox 选项框的所有行...
10
1.5 如何选中指定行的CheckBox 选项框...
10
2 如何使用 Radio 单选框...
10
1.1 如何初始化Radio 单选框...
10
2.2 如何判断该行的Radio 单选框被选中...
11
四 高级特性:...
11
1 如何在MulLine中添加代码选择功能(即双击弹出选择下拉框)11
2如何在MulLine中添加代码选择功能(即双击弹出选择下拉框,从前端自己传入数据)13
3 如何在MulLine中添加字段数据校验功能...
15
4 如何在MulLine中添加双击相应事件,响应自己编写的JS函数...
15
5 如何在MulLine中单击CheckBox时响应开发人员外部编写的JS函数...
16
6 如何在MulLine中单击RadioBox时响应开发人员外部编写的JS函数...
18
7 如何在MulLine中单击“+”按钮和 “–”号按钮时响应开发人员外部编写的JS函数...
19
8 如何在分页显示数据时,使后续页的MulLine中的显示序号与纪录数一致...
20
9 如何在使用代码选择功能时,设置弹出的选择下拉框的宽度...
21
10如何在使用代码选择功能时,强制刷新数据源...
21
11如何在查询时使设置的代码选择列将编码显示为对应的汉字...
21
五 错误描述和诊断...
21
1 如果IE弹出对话框:没有该对象或未知的对象或者对象没有该方法...
21
2 如果弹出对话框:MulLine.js中某某方法出现异常...
21
3如果弹出对话框:MulLinejs中某某方法中指定了错误的列(或者行)...
22
4如果出现其它错误信息...
22
具体描述
一 约定和声明
(1) 你使用得IE版本必须是5.5以上(包括5.5)(2) 在后续的所有说明中,均假定MulLine的对象名为:ObjGrid ;该MulLine对象所在的表单名为:fm
(3) 后续用到的行和列都是从0行0列开始。和数组是一致的(注:除非有特殊声明)
(4) 所有调用方法和属性的名字遵循命名规则:首字母小写,后续单词首字母大写。
方法如:clearData,setRowColData,lock,unLock
属性如:mulLineCount,canAdd , locked
(5) 具体实例:请看Z:\resource\模版程序\testMulLine下的示范待码)
运行:http://hostName:8900/ui/testMulLine/mulineTest.html(hostName是主机名)
(6) 高级特性中,均借助于外部函数,必须包含相应的外部文件
二 基础特性:
1如何初始化MulLine (含属性说明)
(1) 在显示MulLine的页面上(例如xxxInput.jsp文件)必须有如下代码:<span id="spanObjGrid "></span> 其位置放在表单fm中
id名称必须是:span+MulLine的对象名(这里是ObjGrid)
(2) 在JS文件中(如xxxInit.js文件)的JavaScript函数中如下设置
假定产生3行两列的MulLine对象
<scriptlanguage="JavaScript">
function initObjGrid() //函数名为init+MulLine的对象名ObjGrid
{
var iArray = new Array(); //数组放置各个列
try
{
iArray[0]=new Array();
iArray[0][0]="序号"; //列名(序号列,第1列)
iArray[0][1]="30px"; //列宽
iArray[0][2]=10; //列最大值
iArray[0][3]=0; //1表示允许该列输入,0表示只读且不响应Tab键
// 2 表示为容许输入且颜色加深.
iArray[1]=new Array();
iArray[1][0]="示范列1"; //列名(第2列)
iArray[1][1]="30px"; //列宽
iArray[1][2]=10; //列最大值
iArray[1][3]=0; //是否允许输入,1表示允许,0表示不允许
//后续可以添加N列,如上设置
//生成对象区,规则:对象名=new MulLineEnter(“表单名”,”对象名”);
ObjGrid= new MulLineEnter( "fm" , "ObjGrid" );
//设置属性区 (需要其它特性,在此设置其它属性)
ObjGrid.mulLineCount = 3; //行属性:设置行数=3
ObjGrid.displayTitle =1; //标题属性:1显示标题 (缺省值) ,0隐藏标题
//对象初始化区:调用对象初始化方法,属性必须在此前设置
ObjGrid.loadMulLine(iArray);
}
catch(ex)
{ alert(ex); }
}
</script>
上面是MulLine的初始化的基本用法,如果用到其他功能,请参阅该功能的详细说明,会有一些相关的初始化的附加设置。
2 如何在JavaScript中给MulLine赋值
使用MulLine对象的setRowColData(row,col,value)方法参数为:行,列,值 ;返回值为真假
如;ObjGrid. setRowColData(0,1,”赋给第0行第1列的值”);
注意:是从0行0列开始。因此,我们认为0行是第0行,0列是第0列
注意:第3个参数,value如果不是变量,请用引号扩住
注意:如果程序弹出对话框:提示setRowColData时指定了错误的行(或列),那么意味着你在赋值时指定的行或列超出了范围(即小于0或者大于行数或列数)
注意:请不要给0列赋值,因为是序号列,会自行变化
3 如何在JavaScript中从MulLine取值
(1) 取出指定的第几行第几列的值使用MulLine对象的getRowColData(row,col)方法
参数为:行,列; 返回值:指定行和列的值
如:var value=ObjGrid. getRowColData(0,1);
注意:是从0行0列开始。因此,我们认为0行是第0行,0列是第0列
注意:如果程序弹出对话框:提示getRowColData时指定了错误的行(或列),那么意味着你在取值时指定的行或列超出了范围(即小于0或者大于行数或列数)
注意:可以得到0列(序号列)的值
(2)取出指定的某一行的值
使用MulLine对象的getRowData(row) 法方
参数为:行号 ; 返回值:指定行的所有值,返回形式为一维数组
如:var iArray=ObjGrid. getRowColData(0);
注意:是从0行开始。因此,我们认为0行是第0行。
注意:如果程序弹出对话框:提示getRowData时指定了错误的行,那么意味着你在取值时指定的行超出了范围(即小于0或者大于行数)
注意:数组iArray值不包括序号列的值。即iArray[0]为该行第1列的值,依次类推。
4 如何在JSP中得到MulLine中的值(必须提交页面)
提交有MulLine的页面后,在接受页如下处理:<%
StringtGridNo[] = request.getParameterValues("ObjGridNo"); //得到序号列的所有值
String tGrid1 [] =request.getParameterValues("ObjGrid1"); //得到第1列的所有值
String tGrid2 [] =request.getParameterValues("ObjGrid2"); //得到第2列的所有值
Int Count = tGridNo.length; //得到接受到的记录数
For(int index=0;index< Count;index++)
{
System.out.println("GridNO="+tGridNo [index]);
System.out.println("Grid 1="+ tGrid1[index]);
System.out.println("Grid 2="+ tGrid2[index]);
}
%>
如果需要处理被选中的纪录(即CheckBox 和Radio 框)请参看中级特性说明
5 如何在JSP中给MulLine赋值
即在JSP页面中内嵌JavaScript代码,如:<scriptlanguage="javascript">
parent.fraInterface..ObjGrid.addOne("ObjGrid"); //添加一行,见该方法说明
parent.fraInterface..ObjGrid.setRowColData(行,列,值);
</script>
注意:不要使用parent.fraInterface..fm .ObjGrid方式,否则会报错:没有该对象
注意:在将JSP变量传给setRowColData方法的参数3时,请用引号扩住。
如:“<%=JspValue%>“ ,对于行,列参数不用加引号扩住(数值型)
6 如何添加一行
1 程序中请使用方法addOne(”MulLine对象名”)或者 addOne()如:(1 ) ObjGrid.addOne(“ObjGrid”);//注意:有引号
(2 ) 或者 ObjGrid.addOne();
2 在页面上如果”+”号标记存在,单击即可(该”+”号可以隐藏)
7 如何删除一行
1 在页面上如果”--”号标记存在,单击即可(该”--”号可以隐藏)2 直接删除任意一行的方法是不对外的,但是你可以查阅:
à如何删除所有行
à如何删除所有空行
à如何删除选中CheckBox 选项框的所有行
请参阅下面相关详细说明
8 如何删除所有行
使用方法clearData(“MulLine的对象名”) 或者 clearData ();如:(1)ObjGrid. clearData(“ObjGrid”);
(2 ) 或者 ObjGrid. clearData ();
9 如何删除所有空行
将MulLine中所有空行(空行:该行每一列都没有数据)删除使用方法delBlankLine (“MulLine的对象名”) 或者delBlankLine()
如:(1) ObjGrid. delBlankLine (“ObjGrid”);
(2) ObjGrid. delBlankLine ();
10 如何隐藏或显示”+”和”--“标记
初始化MulLine时,在属性设置区增加如下:ObjGrid. hiddenPlus=0; //是否隐藏"+"号标志:1为隐藏;0为不隐藏(缺省值)
ObjGrid. hiddenSubtraction=0; //是否隐藏"-"号标志:1为隐藏;0为不隐藏(缺省值)
刷新后将看不到”+”和”--“标记
11 如何锁定或解锁”+”和”--“标记
MulLine上的”+”和”--“标记可以禁用或恢复(即锁定或解锁)锁定:使用lock () 方法 如ObjGrid. lock ();
解锁:使用unLock () 方法 如ObjGrid. unLock ();
12 如何隐藏一列 (不鼓励使用该方法:显示效果不好)
初始化MulLine设置列数组时,如下设置:(有2种方法)iArray[1]=new Array();
iArray[1][0]="示范列";
iArray[1][1]="0px"; // à你可以将列宽设为0,该列就隐藏了
iArray[1][2]=100;
iArray[1][3]=3; //à你还可以设置选项:0和1表示是否容许输入
2表示代码选择,3表示这一列是隐藏的,
你可以放一些自己想放的数据在这列里
上面两种方法都可以
13 如何得到行数和列数
得到行数和列数,使用MulLine的属性mulLineCount 和 colCount如:var rowNum=ObjGrid. mulLineCount ; //行数
varcolNum=ObjGrid. colCount ; //列数
注意:请不要通过这种方式更改行数和列数。
14 如何设置某一列的初始化值
如果想通过初始化的方式给某一列设置缺省值,那么在初始化MulLine的代码中加入如下:
iArray[1][14]=”初始化值”;
注意:序号必须是14,该项设置是独立的,和其他设置是不影响的。
15 如何设置在页面上的显示宽度
MulLine的显示宽度和页面的宽度是有关系的,这里所指的页面宽度是说页面下没有左右可移动的滚动条时的页面中放置MulLine的框架的宽度
(1) 在一行中放置一个MulLine
如果在初始化时它的各个列宽的和小于页面宽度,那么该MulLine的各个列宽的实际大小将按照下面公式得到:
实际列的宽度=初始设置列的宽度*页面宽度/初始设置列的宽度之和
这样就会填充满整个页面的宽度。
如果在初始化时它的各个列宽的和大于页面宽度,那么将会按照初始化设置的宽度显示。当然,页面下方会出现左右可以移动的滚动条。
(2) 在一行中放置两个MulLine
请在每个MulLine初始化时设置属性:ObjGrid.mulLineNum=2,
即表明同一行有2个MulLine,这样当2个MulLine的实际宽度小于页面的宽度时,就可以在页面中正常显示(不出现滚动条),而不会出现第一个MulLine的宽度填充整个页面的宽度,第二个MulLine需要移动滚动条才能看到的情况。
当然,如果两个MulLine的宽度和大于页面的宽度,那么是会出现滚动条,并且借助于滚动条才能看到两个MulLine。
(3) 在一行中放置多个MulLine
道理和(2)是一样的。
16 如何设置使指定行的某一列得到焦点
使用MulLine的方法setFocus (Row,Col, cObjInstance)参数说明 :Row 行号,注意从 0行开始,不能为空 。
Col 列号,注意从0列开始,但是序号列为0列。可以为空。
如果为空,自动设置为1 。
cObjInstance MulLine对象名,一般设为空。
17 如何判断指定行的某一列是否得到焦点
待做三 中级特性:
1 如何使用CheckBox 选项框
1.1 如何初始化CheckBox 选项框
初始化MulLine时,在属性设置区添加属性设置ObjGrid.canChk =1; // 1为显示CheckBox列,0为不显示 (缺省值)
1.2 如何判断该行CheckBox 选项框被选中
(1) 在JavaScript里使用方法getChkNo(row)参数row为行数(从0行开始)返回true (选中) 或者 false(未选中)
循环处理,即可判断所有行的选中状态。
注意:如果指定了错误的行(<0或者 >=总行数)
弹出错误信息:在MulLine.js中指定错误的行
(2)在JSP中如下处理:
String tChk[] =request.getParameterValues("InpObjGridChk");
//参数格式=” Inp+MulLine对象名+Chk”
For(intindex=0;index<tChk.length;index++)
{
if(tChk[index].equals("1"))
System.out.println(“该行被选中”);
if(tChk[index].equals("0"))
System.out.println(“该行未被选中”);
}
1.3 如何选中或不选中所有行的CheckBox选项框
初始化CheckBox后,在MulLine的行标题左首处也会有一个CheckBox.选中它,则所有行的CheckBox被选中,否则,都不选中
程序中可以使用3个方法:
ObjGrid.checkBoxAll ()--选中所有行
ObjGrid. checkBoxAllNot () --撤销所有行选中状态
ObjGrid. checkAll ()--如果不处于选中状态,那么选中所有行;否则撤销所有行
1.4 如何删除选中CheckBox 选项框的所有行
使用方法delCheckTrueLine(”MulLine的对象名”)或者 delCheckTrueLine()如:(1) ObjGrid.delCheckTrueLine("ObjGrid");
(2) 或者ObjGrid.delCheckTrueLine ();
所有该Grid处于选中状态的行都被删除
1.5 如何选中指定行的CheckBox 选项框
使用方法 checkBoxSel(行号) :注意—参数行号从1开始。如:(1) ObjGrid. checkBoxSel (1);
使第一行的checkBox()被选中
2 如何使用 Radio 单选框
1.1 如何初始化Radio 单选框
在初始化MulLine的属性设置区如下设置:ObjGrid.canSel =1; // 1 显示 ;0 隐藏(缺省值)
2.2 如何判断该行的Radio 单选框被选中
(1) 在JavaScript中如下使用:使用方法:getSelNo()
如:ObjGrid.getSelNo () 内部循环判断所有行
返回被选中的行的行号。
注意:行号是从1开始,和数组是不一样的。
如果没有选中行,返回值是0。
所以和setRowColData()或getRowColData()使用时要小心
(2 ) 在JSP中如下处理:
String tRadio[] =request.getParameterValues("InpObjGridSel");
//参数格式=” Inp+MulLine对象名+Sel”
For (int index=0; index< tRadio.length;index++)
{
if(tRadio[index].equals(“1”))
System.out.println(“该行被选中”);
if(tRadio[index].equals(“0”))
System.out.println(“该行未被选中”);
}
四 高级特性:
1 如何在MulLine中添加代码选择功能(即双击弹出选择下拉框)
该功能必须与文件<SCRIPT src="src="../common/javascript/CCodeOperate.js"></SCRIPT>一起使用
(1)如果仅仅是MulLine的某一列需要代码选择功能,那么
首先在使用MulLine的文件中(如:xxxInput.jsp)必须有如下一行:
<spanid="spanCode" style="display: none; position:absolute;slategray"></span>
然后在初始化时设置该列时如下:(参见MulLine的初始化)
iArray[1][0]="性别"; //列名
iArray[1][1]="100px"; //列宽
iArray[1][2]=100; //列最大值
iArray[1][3]=2; //是否允许输入,1表示允许,0表示不允许,2表示代码选择
iArray[1][4]="Sex"; //是否引用代码: null或者""为不引用
说明:
iArray[1][3]=2; 则该列的每一个输入框的样式都是代码选择的风格
iArray[1][4]="Sex"; 设置要引用的代码
(2)如果想在某一列实现代码选择的同时,该代码的其它信息显示在其他指定列上
那么在MulLine初始化时,如下设置列数组
iArray[1][0]="区站代码";
iArray[1][1]="100px";
iArray[1][2]=100;
iArray[1][3]=2; //2表示代码选择
iArray[1][4]="Station"; //引用代码:
iArray[1][5]="1|2"; //引用代码对应第几列,'|'为分割符
iArray[1][6]="0|1"; //上面的列中放置引用代码中第几位值
iArray[2]=new Array();
iArray[2][0]="区站名称";
iArray[2][1]="100px";
iArray[2][2]=100;
iArray[2][3]=1; //是否允许输入,1表示允许,0表示不允许
说明:
(a)iArray[1][4]="Station"; 即该列要引用区站代码
(b)iArray[1][5]="1|2"; 引用代码信息分别放在第1列和第2列,'|'为分割符
iArray[1][6]="0|1"; 引用代码数组的第0项(区站代码)放在第1列
引用代码数组的第1项(区站名称)放在第2列
对多列显示代码选择:这两项必须同时存在,缺少任何一项。都认为无效
这两项中的数字是上下对应关系,
即Muline第1列àCode第0项
Muline第2列àCode第1项
(c)推荐:上下两项中的数字数目保持一致,
如:1|2 对应0|1 ;2|3|4 对应1|3|4 左右数目相等
但是:如果象:
iArray[1][5]="1|2";
iArray[1][6]="0";
或者
iArray[1][5]="1";
iArray[1][6]="0|1";
这是不会出错的,将按照最少原则处理,即还是对应关系,但是多出来的项
将会被忽略,或者表格中填充undefine 所以建议你还是按照规范书写
(d) 排在首位的列号就是代码选择框在页面上要显示的列处,如:
如果 iArray[1][5]="1|2"; 首位是1 ,则双击当前列(即第1列),那么代码选择框就会在第1列位置处显示。
如果 iArray[1][5]="2|1"; 首位是2 ,则双击当前列(即第1列),那么代码选择框就会在第2列位置处显示。
推荐将首位设置为你要选择代码的列号。当然,设置成其他列号是不会有影响的,这可以由你灵活掌握
涉及代码选择问题请问杨涛
(e) 扩展功能:如果在显示时要加上限制条件,譬如,当前列的双击弹出代码框的内容
依赖于其它控件或者其他列的值,那么在初始化MulLine时,对要添加限制条件的列增加如下代码:(以MulLine的第1列为例)
如果是根据单独的控件的值判断,那么
iArray[1][15]="控件名称"; //譬如Form中除了MulLine外的其它控件名称
iArray[1][16]="该控件的值"; //可以用fm.all(‘xxx’).value或者固定值或变量传入
如果是多个组合条件,可以先拼成字符串,具体格式请参见showcodelist函数第5个参数的用法。
iArray[1][15]="控件1的名称"; //譬如Form中除了MulLine外的其它控件名称
iArray[1][16]= StrSql;
StrSql = "#1# and 2=#2#"; //因为JS往后台传输的原因,单引号“'”必须用“#”替代,譬如:
iArray[1][15]="Name";
iArray[1][16]= StrSql;
StrSql = "#姓名# and Sex=#性别#";
最后传到后台的语句转换为: ” Name=’姓名’ and Sex=’性别’ “;
如果根据MulLine的某一列的值判断,那么
iArray[1][15]= "列名称"; //要依赖的列的名称
iArray[1][17]="列号"; //该列的列号,
如上即可实现.
如果根据MulLine的某几列的值判断,那么(必须用|分割,且上下数目一致)
iArray[1][15]= "列名称1|列名称2|….."; //要依赖的列的名称
iArray[1][17]="列号1|列号2|….."; //列名称的列号,
如上即可实现.
2如何在MulLine中添加代码选择功能(即双击弹出选择下拉框,从前端自己传入数据)
该功能必须与文件<SCRIPT src="src="../common/javascript/CCodeOperate.js"></SCRIPT>一起使用
并且在使用MulLine的文件中(如:xxxInput.jsp) 必须有如下一行:
<span id="spanCode" style="display: none; position:absolute;slategray"></span>
(1)如果仅仅是MulLine的某一列需要代码选择功能,那么初始化时设置该列时如下:(参见MulLine的初始化)
iArray[1][0]="性别"; //列名
iArray[1][1]="100px"; //列宽
iArray[1][2]=100; //列最大值
iArray[1][3]=2; //2表示代码选择(即样式为代码选择)
iArray[1][10]="CodeName"; //引用代码:"CodeName"为传入数据的名称
iArray[1][11]="CodeContent"; //"CodeContent" 是传入要下拉显示的代码
说明:
iArray[1][3]=2; 则该列的每一个输入框的样式都是代码选择的风格
iArray[1][10]=" CodeName "; 设置要引用的代码名称,在页面上最好唯一
iArray[1][11]=" CodeContent "; 设置要引用的代码(有格式要求)
例如:
iArray[1][10]=" CodeTest "; 名字最好有唯一性
iArray[1][11]= "0|^1|^2|^3" ; 以^ 分割每个记录,以 | 分割每个纪录中的字段
如 "0|^1|第一个|^2|第2个|^3|第3个" ;
或者 "0|^1|第一个|记录|^2|第2个|记录|^3|第3个|记录" ;
(2)如果想在某一列实现代码选择的同时,该代码的其它信息显示在其他指定列上
那么在MulLine初始化时,如下设置列数组
iArray[1][0]="测试代码";
iArray[1][1]="100px";
iArray[1][2]=100;
iArray[1][3]=2; //2表示代码选择
iArray[1][10]="CodeName"; //引用代码:"CodeName"为传入数据的名称
iArray[1][11]="CodeContent";//"CodeContent" 是传入要下拉显示的代码
iArray[1][12]="1|2"; //引用代码对应第几列,'|'为分割符
iArray[1][13]="0|1"; //上面的列中放置引用代码中第几位值
说明:
(a)iArray[1][12]的格式为 ”列号1|列号2|……” ,如:
iArray[1][12]="1|2"; 引用代码信息分别放在第1列和第2列,'|'为分割符
必须注意的是:”列号1” 必须是当前列的列号。后面的 “列号2|……”等无限制
iArray[1][13]的格式为 ”字段1|字段2|……” ,如:
iArray[1][13]="0|1"; 引用代码数组的第0项(即纪录的第一个字段)放在第1列
引用代码数组的第1项(即纪录的第二个字段)放在第2列
对多列显示代码选择:这两项必须同时存在,缺少任何一项。都认为无效
这两项中的数字是上下对应关系,
即Muline第1列显示CodeData的第0项 字段
Muline 第2列显示CodeData的第1项字段
(b)推荐:上下两项中的数字数目保持一致,
如:1|2 对应0|1 ;2|3|4 对应1|3|4 左右数目相等
但是:如果象:
iArray[1][12]="1|2";
iArray[1][13]="0";
或者
iArray[1][12]="1";
iArray[1][13]="0|1";
这是不会出错的,将按照最少原则处理,即还是对应关系,但是多出来的项
将会被忽略,或者表格中填充undefine 所以建议你还是按照规范书写
(c) 排在首位的列号就是代码选择框在页面上要显示的列处(注意:并且是当前列),如:
如果 iArray[1][12]="1|2"; 首位是1 ,则双击当前列(即第1列)
那么代码选择框就会在第1列位置处显示。
如果 iArray[1][12]="2|1"; 首位是2 ,则双击当前列(即第1列),
那么代码选择框会显示错误!这点和从后台取数据不同,因为ShowCodeListEx代码假定前台的数据存放在传入参数中排在首位的列处,因此会从参数中首位的列号处查找数据源。详情参阅ShowCodeListEx函数(其中Field[0]接受首位列对象)
(d)需要注意的是:数组排序 iArray[1][4]到iArray[1][ 8] 都不能再使用了,格式校验可以使用。
涉及代码选择问题请问杨涛
3 如何在MulLine中添加字段数据校验功能
必须包含外部文件<SCRIPTsrc="../common/javascript/VerifyInput.js"></SCRIPT>在初始化MulLine时如下设置列数组:
iArray[1][0]="区站代码";
iArray[1][1]="100px";
iArray[1][2]=100;
iArray[1][3]=2; //2表示代码选择
iArray[1][4]="Station"; //引用代码:
iArray[1][9]="区站代码|code:station"; //检验格式:按区站代码格式检验
{或者iArray[1][9]=” 区站代码|NOTNULL”}
{或者iArray[1][9]=” 区站代码|LEN<6|LEN>8|NOTNULL”}
//即将数组的序号置为
[列数][9]=”该列名称 | 校验类型参数1 [ | 校验类型参数2 | 校验类型参数3…]”
如果检验到错误,会提示:第几行+第几列+错误原因
具体检验格式请参看 VerifyInput 通用录入校验说明文档(著者:胡博)
因为调用VerifyInput的内部函数,所以检验格式是一致的。
注意:检验MulLine中的数据格式请使用MulLine的内部方法checkValue();
使用方法:ObjGrid. CheckValue(“ObjGrid”); (ObjGrid是MulLine对象名)
或者ObjGrid. CheckValue( ); (即无参数)
4 如何在MulLine中添加双击相应事件,响应自己编写的JS函数
你可以自己编写JS函数,并在MulLine初始化时设置某一列数组,那么在MulLine的该列的输入格上双击后可以响应你编写的JS函数。
具体设置如下:
(1)在初始化时
iArray[1]=new Array();
iArray[1][0]="性别";
iArray[1][1]="100px";
iArray[1][2]=100;
iArray[1][3]=1; //是否允许输入,1表示允许,0表示不允许
iArray[1][7]=“functionName” //你写的JS函数名,不加扩号
iArray[1][8]=”[‘str1’,number,……]” //要传入的参数à可以省略该项
说明:
iArray[1][7]=“functionName” 该函数名由你自己定义,不加扩号
iArray[1][8]=”[‘str1’,number,……]” 传递给函数的的第2个参数
规定它为数组格式(用逗号隔开),数组可以同时包括字符串(请加单引号),数字(不加单引号)等,如果没有要传入得参数,该项可以省略。
注意:某一列的设值iArray[1][4],iArray[1][5],Array[1][6] 和iArray[1][7], iArray[1][8]是不能共同存在的。如果同时存在,那么iArray[1][7],iArray[1][8]是无效的,对该列而言
(2)在xxx.js中编写你声明的函,数框架如下:
functionfunctionName (parm1,parm2) //参数名可以是任意的,不限于parm1和parm2
{
//1 内容由你填充,下面只是给出了一些范例
//2 parm1是给定的,表示当前表单中mulLine当前行的spanID
//如果要弹出当前行第1列的值,那么直接如下使用:
alert(fm.all(parm1 ).all(‘ObjGrid1').value );
//利用第二个值
if(parm2!=null&& parm2!=””) //如果第2个参数parm2有效,parm2可以为空
{
var arr= parm2 ; // parm2 是一个数组,可以存放多个要传入的值
var arrlength= arr.length; //得到数组长度
}
}
注意:该函数是绑定到MulLine上的,所以参数1是初始化MulLine时传入的,通过它可以确定当前行的位置,你只要使用即可;参数2可以传入输组,可以为空,如果需要参数2,必须在MulLine中初始化时设置。
5 如何在MulLine中单击CheckBox时响应开发人员外部编写的JS函数
你可以自己编写JS函数,并在MulLine初始化时简单的设置,就可以实现在MulLine的CheckBox上单击时响应你编写的JS函数。
(注意:此时标题栏处会有一个checkBox,它的作用是选中或不选中显示行中的全部checkBox的,对它单独有一个js函数,对应下面的 b 说明)
具体设置如下:(统一约定:ObjGrid 为你定义的MulLine的对象)
(1)在初始化时
ObjGrid. canChk = 1; //选中checkBox 功能,这是前提条件
(a) 针对每行记录前的checkBox而言,如下
ObjGrid. chkBoxEventFuncName =“functionName”//你写的JS函数名,不加扩号
ObjGrid. chkBoxEventFuncParm =”[‘str1’,number,…]” //传入的参数,可以省略该项
说明:
”[‘str1’,number,……]” 是传递给函数名为“functionName”的的第2个参数
规定它为数组格式(用逗号隔开),数组可以同时包括字符串(请加单引号),数字(不加单引号)等,如果没有要传入得参数,该项可以省略。
(b)针对标题栏具有全选功能的checkBox而言,如下:
ObjGrid.chkBoxAllEventFuncName=“functionName2”//JS函数名,不加扩号
(2)在xxx.js中编写你声明的函数,框架如下:
(a) function functionName (parm1,parm2) //参数名可任意取的,不限于parm1和parm2
{
//1 内容由你填充,下面只是给出了一些范例
//2 parm1是给定的,表示当前表单中mulLine当前行的spanID
//判断当前行的checkBox是否被选中,并执行相应的活动
if(fm.all(parm1).all(' InpObjGridChk').value= ='1' )
{
//当前行第1列的值设为:选中
fm.all(parm1).all(' ObjGrid1').value="选中";
}
else
{
fm.all(parm1).all(ObjGrid1).value="没选中";
}
//利用第二个参数parm2 即上面的”[‘str1’,number,……]”
if(parm2!=null&& parm2!=””) //如果第2个参数parm2有效,parm2可以为空
{
var arr= parm2 ; // parm2 是一个数组,可以存放多个要传入的值
var arrlength= arr.length; //得到数组长度
}
}
注意:该函数是绑定到MulLine上的,所以参数1是初始化MulLine时固定传入的,通过它可以确定当前行的位置,你只要使用即可;参数2可以传入输组,可以为空,如果需要参数2,必须在MulLine中初始化时设置。
(b)function functionName2 (parm1,parm2) //参数名可任意,不限于parm1,parm2
{
//1 内容由你填充,下面只是给出了一些范例
//2 parm1是给定的,其值为true orfalse. 表示当前表单中mulLine的实现全选功能的checkBox是否被选中了;parm2 是给定的,代表该checkBox对象,一般不用
//判断当前行的checkBox是否被选中,并执行相应的活动
if ( parm1 )
{
alert ( “ 全部选中” ) ;
//其它操作
}
else
{
alert( “ 全部没选中” ) ;
}
}
注意:该函数是绑定到MulLine上的,所以参数1,2是初始化MulLine时固定传入的,你只要按上面方法使用即可;
6 如何在MulLine中单击RadioBox时响应开发人员外部编写的JS函数
你可以自己编写JS函数,并在MulLine初始化时简单的设置,就可以实现在MulLine的CheckBox上单击时响应你编写的JS函数。
具体设置如下:(统一约定:ObjGrid 为你定义的MulLine的对象)
(1)在初始化时
ObjGrid. canSel = 1; //选中checkBox 功能,这是前提条件
ObjGrid. selBoxEventFuncName =“functionName” //你写的JS函数名,不加扩号
ObjGrid. selBoxEventFuncParm =”[‘str1’,number,…]” //传入的参数,可以省略该项
说明:
”[‘str1’,number,……]” 是传递给函数名为“functionName”的的第2个参数
规定它为数组格式(用逗号隔开),数组可以同时包括字符串(请加单引号),数字(不加单引号)等,如果没有要传入得参数,该项可以省略。
(2)在xxx.js中编写你声明的函数,框架如下:
functionfunctionName (parm1,parm2) //参数名可以是任意的,不限于parm1和parm2
{
//1 内容由你填充,下面只是给出了一些范例
//2 parm1是给定的,表示当前表单中mulLine当前行的spanID
//判断当前行的checkBox是否被选中,并执行相应的活动
if(fm.all(parm1).all(' InpObjGridChk').value= ='1' )
{
//当前行第1列的值设为:选中
fm.all(parm1).all(' ObjGrid1').value="选中";
}
else
{
fm.all(parm1).all(ObjGrid1).value="没选中";
}
//利用第二个参数parm2 即上面的”[‘str1’,number,……]”
if(parm2!=null&& parm2!=””) //如果第2个参数parm2有效,parm2可以为空
{
var arr= parm2 ; // parm2 是一个数组,可以存放多个要传入的值
var arrlength= arr.length; //得到数组长度
}
}
注意:该函数是绑定到MulLine上的,所以参数1是初始化MulLine时固定传入的,通过它可以确定当前行的位置,你只要使用即可;参数2可以传入输组,可以为空,如果需要参数2,必须在MulLine中初始化时设置。
7 如何在MulLine中单击“+”按钮和 “–”号按钮时响应开发人员外部编写的JS函数
你可以自己编写JS函数,并在MulLine初始化时简单的设置,就可以实现在MulLine点击 “+”,”--” 号响应你编写的JS函数。
具体设置如下:(统一约定:ObjGrid 为你定义的MulLine的对象)
一 “+”号设置
(1)在初始化时
ObjGrid. hiddenPlus = 0; //显示“+”号按钮,这是前提条件, 也是默认选项,
如果不写ObjGrid. hiddenPlus = 1; 则默认显示“+”号按钮,
ObjGrid. addEventFuncName=“functionName” //你写的JS函数名,不加扩号
ObjGrid. addEventFunParm=”[‘str1’,number,…]” //传入的参数,可以省略该项
说明:
”[‘str1’,number,……]” 是传递给函数名为“functionName”的的第2个参数
规定它为数组格式(用逗号隔开),数组可以同时包括字符串(请加单引号),数字(不加单引号)等,如果没有要传入得参数,该项可以省略。
(2)在xxx.js中编写你声明的函数,框架如下:
functionfunctionName (parm1,parm2) //参数名可以是任意的,不限于parm1和parm2
{
//1 内容由你填充,下面只是给出了一些范例
//2 parm1是给定的,表示当前表单中mulLine当前行的spanID
fm.all(parm1).all(' ObjGrid1').value=" test "; //将当前行的第一列值设为 test
//利用第二个参数parm2 即上面的”[‘str1’,number,……]”
if(parm2!=null&& parm2!=””) //如果第2个参数parm2有效,parm2可以为空
{
var arr= parm2 ; // parm2 是一个数组,可以存放多个要传入的值
var arrlength= arr.length; //得到数组长度
}
}
注意:该函数是绑定到MulLine上的,所以参数1是初始化MulLine时固定传入的,通过它可以确定当前行的位置,你只要使用即可;参数2可以传入输组,可以为空,如果需要参数2,必须在MulLine中初始化时设置。
一 “--”号设置
(1)在初始化时
ObjGrid. hiddenSubtraction= 0; //显示“--”号按钮,这是前提条件, 也是默认选项,
如果不写ObjGrid. hiddenSubtraction = 1; 则默认显示“--”号按钮,
ObjGrid. delEventFuncName=“functionName” //你写的JS函数名,不加扩号
ObjGrid. delEventFunParm=”[‘str1’,number,…]” //传入的参数,可以省略该项
说明:
”[‘str1’,number,……]” 是传递给函数名为“functionName”的的第2个参数
规定它为数组格式(用逗号隔开),数组可以同时包括字符串(请加单引号),数字(不加单引号)等,如果没有要传入得参数,该项可以省略。
单一单引号
(2)在xxx.js中编写你声明的函数,框架如下:
functionfunctionName (parm1,parm2) //参数名可以是任意的,不限于parm1和parm2
{
//1 内容由你填充,下面只是给出了一些范例
//2 parm1是给定的,表示当前表单中mulLine当前行的spanID
fm.all(parm1).all(' ObjGrid1').value=" test "; //将当前行的第一列值设为 test
//利用第二个参数parm2 即上面的”[‘str1’,number,……]”
if(parm2!=null&& parm2!=””) //如果第2个参数parm2有效,parm2可以为空
{
var arr= parm2 ; // parm2 是一个数组,可以存放多个要传入的值
var arrlength= arr.length; //得到数组长度
}
}
注意:该函数是绑定到MulLine上的,所以参数1是初始化MulLine时固定传入的,通过它可以确定当前行的位置,你只要使用即可;参数2可以传入输组,可以为空,如果需要参数2,必须在MulLine中初始化时设置。
8 如何在分页显示数据时,使后续页的MulLine中的显示序号与纪录数一致
该项功能是和 分页查询(easyQuery)一起使用的如果使用分页查询,请设置属性 mulLineCount
即在MulLine属性区初始化时添加如下属性:
ObjGrid. mulLineCount =10 因为easyQuery中设置每页显示10条,如果easyQuery
中每页显示数改变,此属性必须改变
譬如:每页显示10条纪录,点击下一页,那么序号应该从11开始。如果不设置这个属性,那么还会从1开始。使用中如果有疑问,请查阅easyQuery使用说明或咨询胡博。
9 如何在使用代码选择功能时,设置弹出的选择下拉框的宽度
在xxxInit.jsp在初始化MultiLine时,在使用代码选择功能的这一列上添加如下:iArray[1][18]= width ;//width 为你要设置的弹出选择下拉框的宽度.
10 如何在使用代码选择功能时,强制刷新数据源
在xxxInit.jsp在初始化MultiLine时,在使用代码选择功能的这一列上添加如下:iArray[1][19]=1 ; //1是需要强制刷新.
11 如何在查询时使设置的代码选择列将编码显示为对应的汉字
在xxxInit.jsp在初始化MultiLine时,在使用代码选择功能的这一列上添加如下:首先需要设置代码选择(从后台取)--见前高级特性1
iArray[1][20]=1 ; //1 为需要在查询时转换代码为汉字.
五 错误描述和诊断
1 如果IE弹出对话框:没有该对象或未知的对象或者对象没有该方法
如果是没有该对象或未知对象,则使用该对象的方式有误如果是对象没有该方法,则是方法名写错
2 如果弹出对话框:MulLine.js中某某方法出现异常
这是MulLine内部Bug, 请提出来3如果弹出对话框:MulLinejs中某某方法中指定了错误的列(或者行)
这是因为在使用 提示信息中的”某某方法”时输入了错误的行或列4如果出现其它错误信息
如果你解决不了或有疑问,请提出来相关文章推荐
- JSON
- js毫秒时间转换成日期时间
- js禁止页面刷新与后退的方法
- jni jstring 、char* 类型的转换
- Jsonp接口
- 4.2、JS——var 数据类型 节点标签属性操作 动态获取方法
- Xml和json接口
- js实现异步跨域上传
- HTML5使用JavaScript控制<audio>音频的播放
- 26、js阶段性复习
- JSP错误页面的处理和exception对象
- JS中this指向
- JS window.onload 和模拟document.ready.
- OC 与JS 交互
- JavaScript里最有效率的功能特征检测方法
- javascript中encodeURI和decodeURI方法
- js 判断字符串是否包含某字符串,String对象中查找子字符indexOf,查找字符串出现的次数split
- Swiper.js使用方法
- js日期格式转换
- JS笔记