网上下的下拉联动插件!数据库是写在XML文本文件里的。如何实现这样的功能?

lxb0592 2012-11-13 08:57:06
下拉联动代码如下(已运用到我的页面里面):
多级联动下拉选择框,动态获取下一级,每一级数据为XML,可支持无限级(浏览器端需要Microsoft.XMLDOM支持)</p>
<select name="MaterialClass1" ChildSelectName="MaterialClass2"></select>
<select name="MaterialClass2" ChildSelectName="MaterialClass3"></select>
<select name="MaterialClass3"></select>

添加数据时的页面

但是在需要对已有的数据修改时!所属工区一直是默认最上面的鹰潭。如何修改代码使工区栏默认为这条数据本身的工区?



这是所属工区的XML数据库文件(不在系统MDB数据库里,单独的一个.XML文本文件里)
<MaterialClasses>
<MaterialClass MaterialClassCode="01" Description="鹰潭"/>
<MaterialClass MaterialClassCode="02" Description="上饶"/>
<MaterialClass MaterialClassCode="03" Description="景德镇"/>
<MaterialClass MaterialClassCode="04" Description="向西一"/>
<MaterialClass MaterialClassCode="05" Description="向西二"/>
<MaterialClass MaterialClassCode="06" Description="萍乡"/>
<MaterialClass MaterialClassCode="07" Description="新余"/>
<MaterialClass MaterialClassCode="08" Description="九江"/>
<MaterialClass MaterialClassCode="09" Description="吉安"/>
<MaterialClass MaterialClassCode="10" Description="赣州"/>
<MaterialClass MaterialClassCode="11" Description="向西电脱"/>
<MaterialClass MaterialClassCode="12" Description="鹰潭综合"/>

</MaterialClasses>
...全文
147 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
scscms太阳光 2012-11-14
  • 打赏
  • 举报
回复
<select name="MaterialClass1" onchange="scs(this.value,'MaterialClass2')" ChildSelectName="MaterialClass2" val="<%=rs("id_card")%>"></select> <select name="MaterialClass2" onchange="scs(this.value,'MaterialClass3')" ChildSelectName="MaterialClass3" val="<%=rs("id_card2")%>"></select> <select name="MaterialClass3" val="<%=rs("id_card3")%>"></select> ===================哥我算是深夜白干了!后两个值没有就留空。
scscms太阳光 2012-11-14
  • 打赏
  • 举报
回复
我那个是一个xml文件实现无限级,从你的代码上看那是需要很多个xml文件组成的无限级下拉菜单。每个菜单选择后取得相应的值给下级菜单,对应加载MaterialClass'+this.options[this.selectedIndex].value+'.xml' 这种方法难以控制,加载文件多容易出错。
  • 打赏
  • 举报
回复
一样的,你那个我不知道你具体的东西 但原理是一样的 你的那个下拉的数据是怎么来的,是服务端程序循环出来的,还会用JS加载过来的 如果服务端程序循环出来的就直接if判断,如果是JS加载过来的,那应该是在JS里进行判断
lxb0592 2012-11-14
  • 打赏
  • 举报
回复
我尝试了以下几种方法,但都没实现成功! 1,<select name="MaterialClass1" ChildSelectName="MaterialClass2"><option vaule=rs("id_card")</option></select><select name="MaterialClass2" ChildSelectName="MaterialClass3"></select> <select name="MaterialClass3"></select> 2,<select name="MaterialClass1" ChildSelectName="MaterialClass2"><option MaterialClassCode=rs("id_card")</option></select> <select name="MaterialClass2" ChildSelectName="MaterialClass3"></select> <select name="MaterialClass3"></select> rs("id_card")是现成的数据值! 有其他方法能实现不?
lxb0592 2012-11-14
  • 打赏
  • 举报
回复
谢谢版主! 是啊,您理解了我的意思!关键我保存的默认工区数据不知道怎么传递过来啊! 系统自带数据库有现成的代码,传统过来比较搞的定,这个是XML数据库不知道怎么把默认数据传递过来?
  • 打赏
  • 举报
回复
对已有数据修改,你应该把保存的那个默认数据传递过来与其比较,跟这是所属工区的XML数据库文件这个没关系,这个只是读取所有的工区的数据,但你还保存的那个并不是在这个里面吧
lxb0592 2012-11-14
  • 打赏
  • 举报
回复
谢谢啊! 不过还是没解决我想解决的问题!
lxb0592 2012-11-14
  • 打赏
  • 举报
回复
xzy21com 大哥! 我上面的这段SCRIPT代码应该是加载XML数据库作用,您看怎么修改这段代码啊! 我看的半懂半不懂!的 麻烦了!
lxb0592 2012-11-14
  • 打赏
  • 举报
回复
chinno版主! 我这个下拉框数据应该是通过下面这个个SCRIPT代码,调用来的!那再修改数据的时候这个SCRIPT代码应该怎么修改! 才能把已有的数据(所属工区)传递过来! <script> var m_oXMLDoc = new ActiveXObject("Microsoft.XMLDOM"); var m_sXmlSrc = "MaterialClass.xml"; //----------------------------------------------- // LoadXML(strXMLSrc) //----------------------------------------------- function BindSelect( strXMLSrc , objSelectName) { m_oXMLDoc.async = true; m_oXMLDoc.onreadystatechange = Function( "fnLoadComplete('" + objSelectName + "');" ); m_oXMLDoc.load( strXMLSrc ); } function fnLoadComplete(objSelectName) { var objSelect = document.all[objSelectName]; var aryXMLNodes; var node; if (objSelect == null) return; try { var iReadyState = m_oXMLDoc.readyState; } catch(e) { return; } if( iReadyState != 4 ) return; if( m_oXMLDoc != null && m_oXMLDoc.xml != "" ) { objSelect.length = 0; aryXMLNodes = m_oXMLDoc.documentElement.selectNodes("MaterialClass"); for (var i=0; i < aryXMLNodes.length; i++) { node = aryXMLNodes[i]; objSelect.options[i] = new Option(node.getAttribute("Description"),node.getAttribute("MaterialClassCode")); } if(objSelect.ChildSelectName != null) { objSelect.onchange = Function( "BindSelect('MaterialClass'+this.options[this.selectedIndex].value+'.xml', '"+objSelect.ChildSelectName+"');" ); objSelect.fireEvent("onchange"); } } } function Init() { try{ BindSelect( m_sXmlSrc, "MaterialClass1"); } catch(e) { setTimeout("Init()",1000) } } </script> <body onLoad="Init()"> <p>多级联动下拉选择框,动态获取下一级,每一级数据为XML,可支持无限级(浏览器端需要Microsoft.XMLDOM支持)</p> <select name="MaterialClass1" ChildSelectName="MaterialClass2"></select> <select name="MaterialClass2" ChildSelectName="MaterialClass3"></select> <select name="MaterialClass3"></select>
lxb0592 2012-11-14
  • 打赏
  • 举报
回复
哈哈!不好意思!非常感谢,麻烦了!
scscms太阳光 2012-11-13
  • 打赏
  • 举报
回复
<select name="MaterialClass1" onchange="scs(this.value,'MaterialClass2')" ChildSelectName="MaterialClass2" val="02"></select>
<select name="MaterialClass2" onchange="scs(this.value,'MaterialClass3')" ChildSelectName="MaterialClass3" val="31"></select>
<select name="MaterialClass3" val="33"></select>
<script type="text/javascript">
    var loadXML    = function(xmlFile) {
        var xmlDoc;
        if(window.ActiveXObject){
            xmlDoc    = new ActiveXObject('Microsoft.XMLDOM');
            xmlDoc.async    = false;
            xmlDoc.load(xmlFile);
        }else if (document.implementation&&document.implementation.createDocument){
            xmlDoc    = document.implementation.createDocument('', '', null);
            xmlDoc.load(xmlFile);
        }else {
            alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');
            return null;
        }
        return xmlDoc;
    };
    var xmlDoc    = loadXML('xml.xml');
    var arr=xmlDoc.getElementsByTagName("MaterialClasses")[0].childNodes;
    function scs(pid,name,val){
        var obj=document.getElementsByName(name)[0];
        if(obj==null)return false;
        obj.innerHTML="";
        var id=null,n= 0,val=obj.getAttribute("val");
        for(var i=0;i<arr.length;i++){
            if(arr[i].getAttribute("pid")==pid){
                var v=arr[i].getAttribute("MaterialClassCode");
                if(n==0||v==val)id=arr[i].getAttribute("MaterialClassCode");
                var str=new Option(arr[i].getAttribute("Description"),v);
                obj.options.add(str);
                n++;
            }
        }
        var child=obj.getAttribute("ChildSelectName");
        if(child!=null){
            scs(id,child);
        }
    }
    scs("0","MaterialClass1");
</script>
<?xml version="1.0" encoding="utf-8" ?>
<MaterialClasses>
    <MaterialClass MaterialClassCode="01" pid="0" Description="鹰潭"/>
    <MaterialClass MaterialClassCode="20" pid="01" Description="鹰潭1"/>
    <MaterialClass MaterialClassCode="21" pid="01" Description="鹰潭2"/>
    <MaterialClass MaterialClassCode="22" pid="20" Description="鹰潭1_1"/>
    <MaterialClass MaterialClassCode="23" pid="20" Description="鹰潭1_2"/>
    <MaterialClass MaterialClassCode="24" pid="21" Description="鹰潭2_1"/>
    <MaterialClass MaterialClassCode="02" pid="0" Description="上饶"/>
    <MaterialClass MaterialClassCode="30" pid="02" Description="上饶1"/>
    <MaterialClass MaterialClassCode="31" pid="02" Description="上饶2"/>
    <MaterialClass MaterialClassCode="32" pid="30" Description="上饶1_1"/>
    <MaterialClass MaterialClassCode="33" pid="31" Description="上饶2_1"/>
    <MaterialClass MaterialClassCode="03" pid="0" Description="景德镇"/>
    <MaterialClass MaterialClassCode="04" pid="0" Description="向西一"/>
    <MaterialClass MaterialClassCode="05" pid="0" Description="向西二"/>
    <MaterialClass MaterialClassCode="06" pid="0" Description="萍乡"/>
    <MaterialClass MaterialClassCode="07" pid="0" Description="新余"/>
    <MaterialClass MaterialClassCode="08" pid="0" Description="九江"/>
    <MaterialClass MaterialClassCode="09" pid="0" Description="吉安"/>
    <MaterialClass MaterialClassCode="10" pid="0" Description="赣州"/>
    <MaterialClass MaterialClassCode="11" pid="0" Description="向西电脱"/>
    <MaterialClass MaterialClassCode="12" pid="0" Description="鹰潭综合"/>
</MaterialClasses>
lxb0592 2012-11-13
  • 打赏
  • 举报
回复
呵呵! 我菜鸟啊! 病急乱投医啊!
scscms太阳光 2012-11-13
  • 打赏
  • 举报
回复
大哥,你除了问下拉菜单就是下拉框成专家了

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧