ASP版的 联动菜单控件 MultiListBox

Sub MultiSelect(PName, CName, initCValue)

 Dim ParentSQL, ChildSQL
 Dim Rs,  Rs1, i, initPvalue
 Dim pTitle
 Dim cTxt, cValue
 Dim ParentElement
 
 ConnectionDatabase
 ' 父分类的SQL语句
 ParentSQL = "Select ID, Title From ArticleClass where ParentID = 0"
 ' 子分类的分类语句 条件是 ParentID = 父分类的 第一个字段
 ChildSQL = "Select ID, Title From ArticleClass where ParentID = "
 
 if initCValue <>"" then
  '由子分类回找父分类的初始值
  initPvalue = Conn.Execute("Select ParentID From ArticleClass where Id = "&initCValue)(0)
 End if
 
 Set Rs = Conn.Execute(ParentSQL)
 i = 0
 Response.Write("<script language=JavaScript>"&vbcrlf&_
      " <!--"&vbcrlf&_
      PName&"Text = new Array(); "&vbcrlf&_
      PName&"Value = new Array(); "&vbcrlf)
 Do while Not Rs.Eof
  Set Rs1 = Conn.Execute(ChildSQL&Rs(0))
  
  pTitle = Rs(1)
  ParentElement = ParentElement&"<option value="&Rs(0)&">"&Rs(1)&"</option>"&vbcrlf
  
  if Not Rs1.Eof Then
   cTxt = Rs1(1)
   cValue = Rs1(0)
   Rs1.MoveNext
  End If
  
  Do while Not Rs1.Eof
   cTxt = cTxt&"|"&Rs1(1)
   cValue = cValue&"|"&Rs1(0)
   Rs1.MoveNext
  Loop
  
  Response.Write(PName&"Text["&i&"]= new Array('"&pTitle&"', '"&cTxt&"');"&vbcrlf)
  Response.Write(PName&"Value["&i&"]= new Array('"&pTitle&"', '"&cValue&"');"&vbcrlf)
  
  i = i + 1
  Rs1.Close: Set Rs1 = Nothing
  Rs.MoveNext
 Loop
 Rs.Close: Set Rs = Nothing
 
 Response.Write("function Change"&PName&"(obj) "&vbcrlf)
 Response.Write(" { "&vbcrlf)
 Response.Write("  var _selectObj = document.getElementById('"&CName&"'); "&vbcrlf)
 Response.Write("  var _Text; "&vbcrlf)
 Response.Write("  var _Value; "&vbcrlf)
 Response.Write("  var txt;"&vbcrlf)
 Response.Write("  txt = obj.options[obj.selectedIndex].text; "&vbcrlf)
 Response.Write("  for(i=0; i< "&PName&"Text.length; i++) "&vbcrlf)
 Response.Write("  { "&vbcrlf)
 Response.Write("   if("&PName&"Text[i][0] == txt) "&vbcrlf)
 Response.Write("   { "&vbcrlf)
 Response.Write("    _Text = "&PName&"Text[i][1].split('|'); "&vbcrlf)
 Response.Write("    _Value = "&PName&"Value[i][1].split('|'); "&vbcrlf)
 Response.Write("   } "&vbcrlf)
 Response.Write("  } "&vbcrlf)
 Response.Write("  _selectObj.length = 0; "&vbcrlf)
 Response.Write("  _selectObj.length = _Text.length; "&vbcrlf)
 Response.Write("   "&vbcrlf)
 Response.Write("  for (i = 0 ;i <_Text.length;i++) "&vbcrlf)
 Response.Write("  { "&vbcrlf)
 Response.Write("   _selectObj.options[i] = new Option(_Text[i],_Value[i]);  "&vbcrlf)
 Response.Write("  } "&vbcrlf)
 Response.Write(" } "&vbcrlf)

 Response.Write("</script>"&vbcrlf)
 Response.Write("<select name="&PName&" id="&PName&"  onChange = ""Change"&PName&"(this)"">"&vbcrlf&_
   ParentElement&_
       " </select>"&vbcrlf)
 Response.Write("<select name="&CName&" id="&CName&">"&vbcrlf&_
       " </select>"&vbcrlf)
 Response.Write("<script language=Javascript> "&vbcrlf)
 Response.Write("function init(value1,value2) {  "&vbcrlf)
 Response.Write("  "&vbcrlf)
 Response.Write("  var _selectObj1 = document.getElementById('"&PName&"');    "&vbcrlf)
 Response.Write("  var _selectObj2 = document.getElementById('"&CName&"');   "&vbcrlf)
 Response.Write("  if (value1!='')  "&vbcrlf)
 Response.Write("  {   "&vbcrlf)
 Response.Write("    for(i=0; i< _selectObj1.length; i++)   "&vbcrlf)
 Response.Write("    {    "&vbcrlf)
 Response.Write("       if(_selectObj1.options[i].value == value1)  "&vbcrlf)
 Response.Write("       {  "&vbcrlf)
 Response.Write("          _selectObj1.selectedIndex = i;  "&vbcrlf)
 Response.Write("          ChangeParentID(_selectObj1);   "&vbcrlf)
 Response.Write("          break;   "&vbcrlf)
 Response.Write("       } "&vbcrlf)
 Response.Write("    } "&vbcrlf)
 Response.Write("  } "&vbcrlf)
 Response.Write("  if (value2!='') "&vbcrlf)
 Response.Write("  {  "&vbcrlf)
 Response.Write("     for(i=0; i< _selectObj2.length; i++) "&vbcrlf)
 Response.Write("     {  "&vbcrlf)
 Response.Write("        if(_selectObj2.options[i].value == value2) "&vbcrlf)
 Response.Write("        {"&vbcrlf)
 Response.Write("          _selectObj2.selectedIndex = i; "&vbcrlf)
 Response.Write("          break; "&vbcrlf)
 Response.Write("         }"&vbcrlf)
 Response.Write("      } "&vbcrlf)
 Response.Write("  } "&vbcrlf)
 Response.Write("}"&vbcrlf)
 
 Response.Write("Change"&PName&"(document.getElementById('"&PName&"')) "&vbcrlf)
  if initCValue <>"" Then
  Response.Write("init('"&initPvalue&"', '"&initCValue&"'); "&vbcrlf)
 End If
 Response.Write("</script>"&vbcrlf)
End Sub

 


==========调用方法===========

<%Call MultiSelect("ParentID","ClassID", "")%>

ParentID 和 ClassID 就是Select的ID值.以后用来Request("ParenID")的

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值