账号通
    

账号  

密码  

4229

查看

9

回复
主题:让模型中自定义字段下拉列表支持SQL语句 [收藏主题] 本贴被认定为精华 转到:  
sysback 当前离线

23

主题

0

广播

1

粉丝
添加关注
级别:学前班

用户积分:188 分
登录次数:89 次
注册时间:2010/11/26
最后登录:2016/2/19
sysback 发表于:2013/6/14 22:42:11   | 只看该作者 查看该作者主题 楼主 
科汛智能建站系统

'科汛官方的模型中自定义字段下拉列表并不支持SQL语句,但有时确实需要这样做,经过修改完全可以实现。
'修改ks_cls文件夹下的Kesion.AdministratorCls.asp,共修改两个地方并添加一个自定义函数。
'修改一:
'找到下面这段代码
'===================================
Case 3,11
If fieldtype=11 Then
GetDiyField=GetDiyField & "<select class=""upfile"" style=""width:" & XWidth & "px"" name=""" & fieldname & """fill" & fieldname &"(this.value)""><option value=''>---请选择---</option>"
Else
GetDiyField=GetDiyField & "<select class=""upfile"" style=""width:" & XWidth & "px"" name=""" & fieldname & """>"
End If
  O_Arr=Split(Node.SelectSingleNode("options").text,"\n"): O_Len=Ubound(O_Arr)
....
....
'===================================

'将334行的 O_Arr=Split(Node.SelectSingleNode("options").text,"\n"): O_Len=Ubound(O_Arr) 这句代码
'改为下面这一段代码:
'------------------------------------------------
Dim Options
Options=Node.SelectSingleNode("options").text
if InStr(Options,"{SQL:")>0 then
Options=GetSqlOptionStr(Options)
end if
O_Arr=Split(Options,"\n")
O_Len=Ubound(O_Arr)
'------------------------------------------------

'修改二:
'找到下面这段代码
'===================================
'取得联动菜单
Function GetLinkAgeMenuStr(ChannelID,FieldXML,FieldDictionary,byVal ParentFieldName,JSStr)
Dim OptionS,OArr,I,VArr,V,F,Str,Node,FieldName
If ParentFieldName="0" Or ParentFieldName="" Then Exit Function
Dim PNode:Set PNode=FieldXML.DocumentElement.selectsinglenode("fielditem[parentfieldname='" & ParentFieldName &"']")
If not pnode is nothing Then
FieldName=pnode.selectsinglenode("@fieldname").text
Str=Str & " <select name='" & FieldName & "' id='" & FieldName & "' onchange='fill" & FieldName & "(this.value)' style='width:" & pnode.selectsinglenode("width").text & "px'><option value=''>--请选择--</option>"
JSStr=JSStr & "var sub" &ParentFieldName & " = new Array();" &vbcrlf
Options=pnode.selectsinglenode("options").text
....
....
'===================================

在433行 Options=pnode.selectsinglenode("options").text 这句代码下面添加下面这段代码:
'--------------------------------------------------
if InStr(Options,"{SQL:")>0 then
Options=GetSqlOptionStr(Options)
end if
'--------------------------------------------------

'添加一个自定义函数
'在467行  ==============复制操作开始============= 这句代码前面添加如下函数代码:

'---------------------------------------------------
' 下拉列表通过SQL语句调用数据库
'---------------------------------------------------

以下内容只有回复后才可以浏览,请先登录!

'----------------------------------------------------------------------
' 要进一步完善系统,还有其它几个文件需要修改,这就由科汛官方去做了。
'----------------------------------------------------------------------

'使用方法:
在后台模型--->选择需要添加自定义字段的模型,如“文章系统 KS_Article”,
或添加新模型,按要求设置好新模型后,进入“字段管理”--->新增字段
在字段类型处选“下拉列表(select)" 或"联动下拉列表”
如果是“下拉列表(select)” 或是“联动下拉列表”的“所属父级字段”为“--作为一级联动--”
在下面的“列表选项”处输入:{SQL:select 字段名一 from 表一}
如果是“联动下拉列表”的“所属父级字段”为二级联动
则在下面的“列表选项”处输入:{SQL:select 字段名二,字段名三 from 表二}
注意这里的"字段名二"查询得到的结果应该与一级联动的可选项内容相同,即与“字段名一”的内容相同,“字段名三才是本级的可选项内容。

如果是“联动下拉列表”的“所属父级字段”为三级联动
则在下面的“列表选项”处输入:{SQL:select 字段名四,字段名五 from 表三}
注意这里的"字段名四"查询得到的结果应该与二级联动的可选项内容相同,即与“字段名三”的内容相同,“字段名五才是本级的可选项内容。
注:联动下拉列表时第一级也可不使用SQL语句,但要保证第二级下拉联动的字段名二的内容与一级的选项内容相同。

例如要按省-->市-->县 三级联动选择,需要建三个表,分别是:
1、代表“省名称”的表: KS_U_sjb_a ,包含两个字段 KS_U_Name,KS_U_Ordid,分别是省名称和排序序号
2、代表“市名称”的表: KS_U_sjb_b ,包含三个字段 KS_U_Sjname,KS_U_Name,KS_U_Ordid,分别是省名称、市名称和排序序号
3、代表“县名称”的表: KS_U_sjb_c ,包含三个字段 KS_U_Sjname,KS_U_Name,KS_U_Ordid,分别是市名称、县名称和排序序号

第一级联动的“列表选项”语句为:{SQL:select KS_U_Name from KS_U_sjb_a order by KS_U_Ordid}
第二级联动的“列表选项”语句为:{SQL:select KS_U_Sjname,KS_U_Name from KS_U_sjb_b order by KS_U_Ordid}
第三级联动的“列表选项”语句为:{SQL:select KS_U_Sjname,KS_U_Name from KS_U_sjb_c order by KS_U_Ordid}
注意二、三级联动的语句中字段顺序不要搞错!
当然如果你熟悉SQL语法,可以加入 where 子句等,由你发挥了。



现在还有个问题,如何实现一对多的下拉联动,即一个一级下拉列表对应多个二级下拉列表,或一个二级下拉列表对应多个三级下拉列表.

哪位有好办法不妨贡献出来!

 
  支持(1) | 反对(0) 回到顶部顶端 回到底部底部
vdream 当前离线

6

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:9 分
登录次数:4 次
注册时间:2013/6/15
最后登录:2013/6/18
vdream 发表于:2013/6/15 6:28:30   | 只看该作者 查看该作者主题 沙发 
做在线知识付费 选科汛云开店
这个好的,有实用价值!!
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
dured 当前离线

1

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:212 分
登录次数:7 次
注册时间:2009/4/8
最后登录:2013/8/26
dured 发表于:2013/8/15 18:11:19   | 只看该作者 查看该作者主题 藤椅 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
billdoing 当前离线

61

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:66 分
登录次数:9 次
注册时间:2013/8/5
最后登录:2013/8/22
billdoing 发表于:2013/8/16 12:52:19   | 只看该作者 查看该作者主题 板凳 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
sfe随风 当前离线

5

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:277 分
登录次数:18 次
注册时间:2008/1/14
最后登录:2015/4/27
sfe随风 发表于:2013/8/19 11:02:23   | 只看该作者 查看该作者主题 报纸 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
sfework 当前离线

7

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:69 分
登录次数:40 次
注册时间:2010/5/16
最后登录:2015/10/28
sfework 发表于:2013/8/28 9:51:08   | 只看该作者 查看该作者主题 地板 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
lodan 当前离线

280

主题

0

广播

2

粉丝
添加关注
级别:二年级

用户积分:2051 分
登录次数:177 次
注册时间:2009/3/26
最后登录:2022/8/4
lodan 发表于:2013/9/15 13:11:50   | 只看该作者 查看该作者主题 7楼 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
lcachang 当前离线

60

主题

1

广播

0

粉丝
添加关注
级别:学前班

用户积分:410 分
登录次数:190 次
注册时间:2009/9/17
最后登录:2018/11/21
lcachang 发表于:2014/3/1 15:31:24   | 只看该作者 查看该作者主题 8楼 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
lcachang 当前离线

60

主题

1

广播

0

粉丝
添加关注
级别:学前班

用户积分:410 分
登录次数:190 次
注册时间:2009/9/17
最后登录:2018/11/21
lcachang 发表于:2014/3/1 15:45:36   | 只看该作者 查看该作者主题 9楼 
做在线知识付费 选科汛云开店
我试了一下,出错误了,

Microsoft JET Database Engine

���� '80040e14'

���ڱ� 'KS_Article' ���������û�������ʹ�ã����ݿ������޷���������

/admin/KS.Field.asp���� 730

这是怎么回事呀。

 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
工作猫 当前离线

2

主题

0

广播

0

粉丝
添加关注
级别:学前班

用户积分:7 分
登录次数:2 次
注册时间:2015/12/20
最后登录:2016/1/4
工作猫 发表于:2015/12/23 20:05:09   | 只看该作者 查看该作者主题 10楼 
 
  支持(0) | 反对(0) 回到顶部顶端 回到底部底部
<上一主题 | 下一主题 >
Powered By KesionCMS Version X1
厦门科汛软件有限公司 © 2006-2016 页面执行0.22168秒 powered by KesionCMS 9.0