当前位置:编程学习 > C#/ASP.NET >>

求解 “asp多级菜单----数据库控制”问题 在线等解答

看了这个帖,为什么参照他的程序,我调试不起来呢?
http://blog.csdn.net/onsrs/archive/2007/01/26/1495011.aspx
下面是我自己修改过的。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>asp多级菜单----数据库控制</title>
<% dim count
set conn=server.createobject("ADODB.Connection")
 conn.open "provider=microsoft.jet.oledb.4.0;data source="&server.mappath("data\userinfo.mdb");
 set rs=server.createobject("adodb.recordset")
rs.open "select * from roominfo  ",conn,1,1
 
%>

<script language="JavaScript" type="text/JavaScript" src="cs.js"></script>
<script language="JavaScript" type="text/JavaScript">
<!--
var aryPType = new Array();
<%
   count = 0
   do while not rs.eof 
%>
aryPType[<%=count%>] = new TreeNode('<%= rs("roomp")%>','<%= trim(rs("roomname"))%>','<%= rs("roomid")%>');
<%
        count = count + 1
        rs.movenext
        loop
        rs.close
  %>
  var countPType =<%=count%>;
-->
</script>
</head>
<body>
<form name="form1" method="post" action="">
  楼栋号:<select name="selP1" id="selP1" onChange="cs1.change(this)" subElement="selP2">
  <option value="0" selected>--请选择--</option>
  </select>
  单元号:<select name="selP2" id="selP2" onChange="cs2.change(this)" subElement="selP3">
  <option value="0" selected>--请选择--</option>  
  </select>
  房间号:<select name="selP3" id="selP3" onChange="cs3.change(this)" subElement="">
  <option value="0" selected>--请选择--</option>
  </select>
  <br>
</form>
<script language="JavaScript" type="text/javascript">
<!--
cs1 = new CascadeSelect(document.form1.selP1, aryPType, '0');// 最顶层为0
cs2 = new CascadeSelect(document.form1.selP2, aryPType, document.form1.selP1.options[document.form1.selP1.selectedIndex].value);
cs3 = new CascadeSelect(document.form1.selP3, aryPType, document.form1.selP2.options[document.form1.selP2.selectedIndex].value);
-->
</script>
</body>
</html>

--------------------编程问答-------------------- 类似这样的代码document.form1.selP1
改为

document.getElementById('selP1') --------------------编程问答-------------------- 看看是否缺少cs.js文件,如果是的话把下面这段js存成cs.js

<!--
/**
* CascadeSelect
* @version build 20050621 get lasted version from jinqinghua@gmail.com
* @author unkown [edited and optimized by Kim]
* @update 20051012 fixed some syntax errors
* @update 20060215 diplay it where select is multiple
*/

/**
* constructor
* @param object element as html element select
* @param array nodes that contains data in tree structure
* @param string parent as parent value
*/
function CascadeSelect(element, nodes, parent){
    this.form = element.form;
    this.tree = new Tree(nodes);
    
    this.subElement = "subElement";
    this.selectedValue = "selectedValue";
    this.defaultText = "defaultText";
    this.defaultValue = "defaultValue";

    this.build(element, parent, false);  
}

/**
* isHasDefault
* @param object element as html element select
* @return boolean true if succeed
*         boolean false if failed
*/
CascadeSelect.prototype.isHasDefault = function(element){
    return this.getUserCustomAttributeValue(element, this.defaultText) != null ? true : false;
}

/**
* isSubElementHasDefault
* @param object element as html element select
* @return boolean true if succeed
*         boolean false if failed
*/
CascadeSelect.prototype.isSubElementHasDefault = function(element){
    var subElement = this.getSubElement(element);
    if (subElement != "undefined"){//not typeof(subElement) != "undefined"
        return this.isHasDefault(subElement);
    }
}

/**
* setDefault
* @param object element as html element select
*/
CascadeSelect.prototype.setDefault = function(element){
    var defaultText = this.getUserCustomAttributeValue(element, this.defaultText);
    var defaultValue = this.getUserCustomAttributeValue(element, this.defaultValue);
    //defaultText = defaultText == null ? "" : defaultText
    defaultValue = defaultValue == null ? "" : defaultValue
    element.options[0] = new Option(defaultText, defaultValue);
}

/**
* build
* @param object element as html element select
* @param string parent as parent value
* @boolean buildSubOnly as if build sub element only
*/
CascadeSelect.prototype.build = function(element, parent, buildSubOnly){
    var tree = this.tree.filterTreeByParent(parent);
    var treeNodesLength = tree.nodes.length
    
    if(!buildSubOnly) {
        var blnIsHasDefault = this.isHasDefault(element);
        var selectedValue = this.getUserCustomAttributeValue(element, this.selectedValue);
        
        element.options.length = 0;
        //if (blnIsHasDefault && (treeNodesLength > 0 || this.isSubElementHasDefault(element))){
        if (blnIsHasDefault){
            this.setDefault(element);
        }
        for(var i = 0;i < treeNodesLength;i++) {
            //alert("text" + tree.nodes[i].option.text + "value:" + tree.nodes[i].option.value);
            if (blnIsHasDefault){
                element.options[i + 1] = new Option(tree.nodes[i].option.text,tree.nodes[i].option.value);
                if(selectedValue != null && tree.nodes[i].option.value == selectedValue) {
                    element.selectedIndex = i + 1;
                }
            } else {
                element.options[i] = new Option(tree.nodes[i].option.text,tree.nodes[i].option.value);
                if(selectedValue != null && tree.nodes[i].option.value == selectedValue) {
                    element.selectedIndex = i;
                }
            }

        }
    }
    if (element.options.length > 0){
        element.style.display = "";
        var subElement = this.getSubElement(element);
        //if (element.id == "selP4"){alert(subElement)}
        if (subElement != "undefined"){//not typeof(subElement) != "undefined"
            this.build(subElement, element.options[element.selectedIndex].value, false);
        }
    } else {
        this.setInvisible(element);
    }
}

/**
* getUserCustomAttributeValue
* @param object element as html element select
* @param string userCustomAttributeName as user custom attribute name
* @return string of attribute name if succeed
*         null null if failed
*/
CascadeSelect.prototype.getUserCustomAttributeValue = function(element, userCustomAttributeName){
    return element[userCustomAttributeName] ? element[userCustomAttributeName] : element.getAttribute(userCustomAttributeName);
}

/**
* getSubElement
* @param object element as html element select
* @return object as html element if succeed
*         string "undefined" if failed
*/
CascadeSelect.prototype.getSubElement = function(element){
    var subElementName = this.getUserCustomAttributeValue(element, this.subElement)
    if (subElementName == null){
        return "undefined"
    } else {
        return this.getElementByName(subElementName);
    }
}

/**
* setInvisible
* @param object element as html element select
*/
CascadeSelect.prototype.setInvisible = function (element){
if (!element.multiple){
     element.style.display = "none";
    }
    var subElement = this.getSubElement(element);
    if (subElement != "undefined"){//not typeof(subElement) != "undefined"
        this.setInvisible(subElement);
    }
}

/**
* get object by name - only return the first html element object
* @param string elementName as html element select name
* @return object as html element if succeed
*         string "undefined" if failed
*/
CascadeSelect.prototype.getElementByName = function(elementName) {
    for(var i = 0;i < this.form.elements.length;i++) {
        if(this.form.elements[i].name == elementName) {
            return this.form.elements[i];
        }
    }
    return "undefined";
}

/**
* handling event onchange
* @param object element as html element select
*/
CascadeSelect.prototype.change = function(element) {    
    this.build(element,element.options[element.selectedIndex].value,true);
}

/**
* Tree Constructor
* @param array nodes that contains data in TreeNode structure.
*/
function Tree(nodes) {
    this.nodes = nodes;
}

/**
* filterTreeByParent
* @param string parent as parent value
* @return ata in Tree structure.
*/
Tree.prototype.filterTreeByParent = function(parent){
    var aryTree = new Array();
    var j = 0;
    for(var i = 0; i < this.nodes.length; i++){
        if (typeof(this.nodes[i]) == "undefined" || this.nodes[i] == null){
            continue;
        }
        if (this.nodes[i].parent == parent){
            aryTree[j] = this.nodes[i];
            j++;
        }
    }
    return new Tree(aryTree);
}

/**
* constructor
* @param string parent as parent value
* @param string node as Option text
* @param string node as Option value
*/
function TreeNode(parent, text, value){
    this.parent = parent;
    this.option = new Option (text, value); //Option is a HTML Element Object
}
-->
--------------------编程问答-------------------- 上面的2位,谢谢了,我去试试看行不。 --------------------编程问答-------------------- 还是不行。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,