应用于:行列式,单据列式+明细内容。
如下:
效果:
1、 网页中要显示哪些标题;
2、 各标题(是否必填项提示、列宽、字体排列方式:居左、中、右;是否为可以输入)
3、 是否需要汇总当前页数据
4、 打印、导出的列内容自己定义,可以设定每个单位体都有不同的打印内容、导出内容。
作用:
1、 缩减每个文件编写代码的行数;
2、 方便维护代码:减少对源文件的修改;
3、 增加开发速度;建立一个文件模版,其它文件开始编写时先导入。重点修改差异部分。
方法:
1、 字段控制表:管理各文件中的列标题字段的设置。如:
2、 读取标题相关设置:在各个文件中先读取标题的设置然后应用。
===============================以下为单据列式+明细内容(可作明细内容,也可作非单据列式时的行列式,也即每页显示的内容就可以由以下的代码控制输出了。)
''------------------------------------------------------单据列表标题行
if cdbl(ifdifferent)=11 then
ChangeAllname="newidsh"
response.write "<table style='margin: 0 auto;width: "&TotalWidth&"px;border: 0;padding: 0;border-spacing: 0;table-layout: fixed;word-bread: break-all;' id='ces_main'>"
response.write "<tr>"
for t=lbound(SplitCol) to cdbl(ubound(SplitCol))-1
if SplitColIndex(t)<=50 then
ResultWidth=cdbl(round(cdbl(Splitwidth(t))*cdbl(WidthScreen),0))-1 ''各字段规定的宽度*总宽显示的比
if SplitMustIs(t)="True" then ''必填字段
response.write "<th style='width: "&ResultWidth&"px;text-align: "&SplitAlign(t)&";' class='alert_color'>"&SplitChCol(t)&"</th>"
else
response.write "<th style='width: "&ResultWidth&"px;text-align: "&SplitAlign(t)&";'>"&SplitChCol(t)&"</th>"
end if
end if
next
response.write "</tr>"
''--------------------------------------------------单据列表内容
''*******************************************************显示明细内容:行内容
for n=1 to cdbl(pagenum)
''******************************************************************行内容异化区间
if cdbl(ifpnum)=1 then
if rs.bof or rs.eof then exit for
Pnum=rs(FdName)
else
Pnum=n ''变量名称的后缀,默认取值
end if
''------------------------------------------行显样式中的状态变量值
if ifstates<>"" then
TrStates=rs(ifstates)
else
TrStates=0
end if
''-------------------------------------------行显示样式
TrStyle="" ''行因状态值不同而显示不同的样式
TrClick=" ondblclick='javascript:window.location.href="""&files&"?chname="&chname&"&delid="&Pnum&"&pageid="&pageid&"""' title='双击显示明细'"
if cdbl(delid)=cdbl(Pnum) then
TrStyle=" class='OkShowLineColor'"
else
if cdbl(TrStates)=-1 then
TrStyle=" class='stop_color'"
elseif cdbl(TrStates)=1 then
TrStyle=" class='yesaudit_color'"
elseif cdbl(TrStates)=2 then
TrStyle=" class='close_color'"
end if
end if
''******************************************************************行内容显示开始
response.write "<tr"&TrStyle&TrClick&">"
for r=lbound(SplitCol) to cdbl(ubound(SplitCol))-1
if cdbl(SplitColIndex(r))<=50 then
''**************************************************************行单元格变量
TextInput="" ''td内的内容
ifinput=0 ''是否可写的判断
if cdbl(mid(SplitUseto(r),cdbl(Ov)+1,1))>0 and cdbl(SplitInput(r))<100 then
ResultWidth=cdbl(round(cdbl(Splitwidth(r))*cdbl(WidthScreen),0))-3 ''各字段规定的宽度*总宽显示的比例
else
ResultWidth=cdbl(round(cdbl(Splitwidth(r))*cdbl(WidthScreen),0))-1 ''各字段规定的宽度*总宽显示的比例
end if
''**************************************************************行单元格内异化区间
if cdbl(ifvarvalue)=1 then
WhereVarvalue=rs(r)
else
WhereVarValue="" ''取变量值即字段值
end if
WhereVarname=SplitWhereVar(r)&pnum ''变量名称
''--------------------------------------------首列的取值问题
if cdbl(SplitColIndex(r))=51 or cdbl(SplitColIndex(r))=1 then
if cdbl(Ov)=2 and cdbl(Trstates)<0 then
Pnum=(pageid-1)*pagenum+n
elseif cdbl(Ov)=3 then
Pnum=(pageid-1)*pagenum+n
elseif cdbl(Ov)=4 and cdbl(TrStates)<0 then
Pnum=(pageid-1)*pagenum+n
elseif cdbl(Ov)=5 and cdbl(TrStates)>0 then
Pnum=(pageid-1)*pagenum+n
elseif cdbl(Ov)=6 and cdbl(TrStates)<>0 then
Pnum=(pageid-1)*pagenum+n
end if
WhereVarValue=pnum
WhereVarname=SplitWhereVar(r)
end if
''***************************************************************行单元格内容固定输出区间
''------------------------------------------------可写加工:操作、布局的、可写类型的计算条件
if cdbl(mid(SplitUseto(r),cdbl(Ov)+1,1))>0 and cdbl(SplitInput(r))<100 then ''当布局中对应的本次新增的状态大于0表示可写;可写类型小于100表示各种对应的表单
if cdbl(mid(SplitUseto(r),cdbl(Ov)+1,1))=1 then
ifinput=1
elseif cdbl(mid(SplitUseto(r),cdbl(Ov)+1,1))=2 then
ifinput=1
elseif cdbl(mid(SplitUseto(r),cdbl(Ov)+1,1))=3 then
ifinput=1
end if
''------------------------------------------可写状态的内容
if cdbl(ifinput)=1 then
if cdbl(SplitInput(r))=1 then ''复选框
TextInput="<input type='checkbox' name='"&WhereVarname&"' id='"&WhereVarname&"' style='width: "&ResultWidth&"px;text-align: "&SplitAlign(r)&";' value='"&WhereVarValue&"' />"
elseif cdbl(SplitInput(r))=2 then ''输入框
TextInput="<input type='text' name='"&WhereVarname&"' id='"&WhereVarname&"' style='width: "&ResultWidth&"px;text-align: "&SplitAlign(r)&";' value='"&WhereVarValue&"' />"
elseif cdbl(SplitInput(r))=3 then ''选择框
elseif cdbl(SplitInput(r))=4 then ''单选框
end if
end if
else
ifinput=0
end if
''------------------------------------------当选择了未生成单据的列表项时,只允许勾选,其它不可修改
if cdbl(S_suid)>0 and cdbl(r)>0 then
ifinput=0
end if
if cdbl(ifinput)=0 then
TextInput=" "&WhereVarValue
elseif cdbl(ifinput)=2 then
TextInput="*"
end if
response.write "<td style='width: "&ResultWidth&"px;text-align: "&SplitAlign(r)&";'>"&TextInput&"</td>"
end if
next
response.write "</tr>"
rs.movenext
if rs.bof or rs.eof then exit for
next
response.write "</table>"
end if
if cdbl(delid)>0 then
''---------------------------------------------------隔离行
response.write "<table style='margin: 0 auto;width: "&TotalWidth&"px;border: 0;padding: 0;border-spacing: 0;table-layout: fixed;word-bread: break-all;' id='ces_main'>"
response.write "<tr><td> </td></tr>"
response.write "<tr><td style='text-align: center;' class='dark_gray_color'>以上为进料订单列表,以下为双击进料订单行后显示的明细。</td></tr>"
response.write "</table>"
end if
if cdbl(ifdifferent)>0 then
response.write "<table style='margin: 0 auto;width: "&TotalWidth&"px;border: 0;padding: 0;border-spacing: 0;table-layout:fixed;word-bread:break-all;' id='ces_main'>"
''*******************************************************显示明细内容:行标题
response.write "<tr>"
for t=lbound(SplitCol) to cdbl(ubound(SplitCol))-1
if SplitColIndex(t)>50 then
ResultWidth=cdbl(round(cdbl(Splitwidth(t))*cdbl(WidthScreen),0))-1 ''各字段规定的宽度*总宽显示的比
if SplitMustIs(t)="True" then ''必填字段
response.write "<th style='width: "&ResultWidth&"px;text-align: "&SplitAlign(t)&";' class='alert_color'>"&SplitChCol(t)&"</th>"
else
response.write "<th style='width: "&ResultWidth&"px;text-align: "&SplitAlign(t)&";'>"&SplitChCol(t)&"</th>"
end if
end if
next
response.write "</tr>"
''---------------------------------------当非新增的,双击单据列表之后展开明细
if cdbl(delid)>0 and cdbl(Ov)>1 then
ChangeAllname="chkall"
rs.close
SelectField="agidid,agbd_code,agbd_name,agbd_spec,agbd_mtype,agbd_L,agbd_W,agbd_H,agbd_sizeunit,agbd_unit,agbd_nofini,agid_innum,agid_remark,agid_fromcode,agid_states"
FieldSearch="agid_aginid="&delid&""
sql="select "&SelectField&" from "&FromStr&" where "&FieldSearch&OrderBySql
rs.open sql,conn,1,1
pagenum=rs.recordcount
ifprogess=0
FdName="agidid"
ifpnum=1
ifstates="agid_states"
ifvarvalue=1
ifxiaowei=""
ifdifferent=11
ifotherline=0
end if
''*******************************************************显示明细内容:行内容
for n=1 to cdbl(pagenum)
''******************************************************************行内容异化区间
if cdbl(ifpnum)=1 then
if rs.bof or rs.eof then exit for
Pnum=rs(FdName)
else
Pnum=n ''变量名称的后缀,默认取值
end if
''------------------------------------------行显样式中的状态变量值
if ifstates<>"" then
TrStates=rs(ifstates)
else
TrStates=0
end if
if chname=md5("_IXSDCSWCX") then
Pnum=(cdbl(pageid)-1)*pagenum+n
elseif chname=md5("_IXSDCSWXG") and cdbl(TrStates)<>0 then
Pnum=(cdbl(pageid)-1)*pagenum+n
elseif chname=md5("_IXSDCSWSH") and cdbl(TrStates)<>0 then
Pnum=(cdbl(pageid)-1)*pagenum+n
elseif chname=md5("_IXSDCSWZZ") and cdbl(TrStates)<0 then
Pnum=(cdbl(pageid)-1)*pagenum+n
elseif chname=md5("_IXSDCSWSC") and cdbl(TrStates)<>0 then
Pnum=(cdbl(pageid)-1)*pagenum+n
elseif chname=md5("_IXSDCSWBB") then
Pnum=(cdbl(pageid)-1)*pagenum+n
end if
''-------------------------------------------小数位取值
if ifxiaowei<>"" then
xiaowei=rs(ifxiaowei)
else
xiaowei=2
end if
''-------------------------------------------行显示样式
TrStyle="" ''行因状态值不同而显示不同的样式
TrClick="" ''行是否需要双击及显示提示
if cdbl(delid)=cdbl(Pnum) then
TrStyle=" class='OkShowLineColor'"
else
if cdbl(TrStates)=-1 then
TrStyle=" class='stop_color'"
elseif cdbl(TrStates)=1 then
TrStyle=" class='yesaudit_color'"
elseif cdbl(TrStates)=2 then
TrStyle=" class='close_color'"
end if
end if
''******************************************************************行内容显示开始
response.write "<tr"&TrStyle&">"
for r=lbound(SplitCol) to cdbl(ubound(SplitCol))-1
if cdbl(SplitColIndex(r))>50 then
''**************************************************************行单元格变量
TextInput="" ''td内的内容
ifinput=0 ''是否可写的判断
if cdbl(mid(SplitUseto(r),cdbl(Ov)+1,1))>0 and cdbl(SplitInput(r))<100 then
ResultWidth=cdbl(round(cdbl(Splitwidth(r))*cdbl(WidthScreen),0))-3 ''各字段规定的宽度*总宽显示的比例
else
ResultWidth=cdbl(round(cdbl(Splitwidth(r))*cdbl(WidthScreen),0))-1 ''各字段规定的宽度*总宽显示的比例
end if
''**************************************************************行单元格内异化区间
if cdbl(ifvarvalue)=1 then
if instr(SplitCol(r)," as ")>0 then
splitas=split(SplitCol(r)," as ")
WhereVarValue=rs(splitas(1))
else
WhereVarvalue=rs(SplitCol(r))
end if
else
WhereVarValue="" ''取变量值即字段值
end if
WhereVarname=SplitWhereVar(r)&pnum ''变量名称
''---------------------------------------------异化变量值
if cdbl(ifdifferent)=2 then
if instr(SplitCol(r),"agid_innum")>0 then
WhereVarValue=rs("agid_innum")
elseif instr(SplitCol(r),"agid_remark")>0 then
WhereVarValue=rs("agid_remark")
elseif instr(SplitCol(r),"agid_fromcode")>0 then
WhereVarValue=rs("agid_fromcode")
end if
end if
''--------------------------------------------首列的取值问题
if cdbl(SplitColIndex(r))=51 or cdbl(SplitColIndex(r))=1 then
WhereVarValue=pnum
WhereVarname=SplitWhereVar(r)
end if
''***************************************************************行单元格内容固定输出区间
''------------------------------------------------可写加工:操作、布局的、可写类型的计算条件
if cdbl(mid(SplitUseto(r),cdbl(Ov)+1,1))>0 and cdbl(SplitInput(r))<100 then ''当布局中对应的本次新增的状态大于0表示可写;可写类型小于100表示各种对应的表单
if cdbl(mid(SplitUseto(r),cdbl(Ov)+1,1))=1 and cdbl(TrStates)=0 then
ifinput=1
elseif cdbl(mid(SplitUseto(r),cdbl(Ov)+1,1))=2 and cdbl(TrStates)=0 then
ifinput=1
elseif cdbl(mid(SplitUseto(r),cdbl(Ov)+1,1))=3 and cdbl(TrStates)>=0 then
ifinput=1
end if
''------------------------------------------可写状态的内容
if cdbl(ifinput)=1 then
if cdbl(SplitInput(r))=1 then ''复选框
TextInput="<input type='checkbox' name='"&WhereVarname&"' id='"&WhereVarname&"' style='width: "&ResultWidth&"px;text-align: "&SplitAlign(r)&";' value='"&WhereVarValue&"' />"
elseif cdbl(SplitInput(r))=2 then ''输入框
TextInput="<input type='text' name='"&WhereVarname&"' id='"&WhereVarname&"' style='width: "&ResultWidth&"px;text-align: "&SplitAlign(r)&";' value='"&WhereVarValue&"' />"
elseif cdbl(SplitInput(r))=3 then ''选择框
elseif cdbl(SplitInput(r))=4 then ''单选框
end if
end if
else
ifinput=0
end if
''------------------------------------------当选择了未生成单据的列表项时,只允许勾选,其它不可修改
if cdbl(S_suid)>0 and cdbl(r)>0 then
ifinput=0
end if
if cdbl(ifinput)=0 then
TextInput=" "&WhereVarValue
elseif cdbl(ifinput)=2 then
TextInput="*"
end if
response.write "<td style='width: "&ResultWidth&"px;text-align: "&SplitAlign(r)&";'>"&TextInput&"</td>"
end if
next
response.write "</tr>"
''*****************************************调用:不提交页面依据输入的数据计算单价。
if ifxiaowei<>"" then
response.write "<script>jsresult("&pnum&","&xiaowei&");</script>"
end if
if cdbl(ifotherline)=1 then
%>
<tr id="Drawing<% =pnum%>" style="display: none;" ondblclick="this.style.display='none';" title="鼠标双击该行空白区域隐藏">
<!-- <td colspan="2"> </td> -->
<td colspan="<% =Ubound(SplitCol)%>" class='light_gray_color'>图纸:<input name="absk_drawing<% =pnum%>" type="text" id="absk_drawing<% =pnum%>" value="<% =abskdrawing%>" size="40" /><iframe src='../public/uploadok.asp?savepath=../files/own/O_drawing/&sizenum=40&tup=form3.absk_drawing<% =pnum%>' frameborder="0" width="420" height="25" scrolling="no"></iframe>
<% if abskdrawing<>"" then%><a href="#" onclick="javascript:window.open('../files/own/O_drawing/<% =abskdrawing %>');">点击这里打开或下载图纸:<% =abskdrawing%></a><% end if%>
</td>
</tr>
<%
end if
if cdbl(ifpnum)=1 then
rs.movenext
if rs.bof or rs.eof then exit for
end if
next
response.write "</table>"
end if