网上下的下拉联动插件!数据库是写在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>
...全文
158 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
大哥,你除了问下拉菜单就是下拉框成专家了
一、验证类 1、数字验证内 1.1 整数 1.2 大于0的整数 (用于传来的ID的验证) 1.3 负整数的验证 1.4 整数不能大于iMax 1.5 整数不能小于iMin 2、时间类 2.1 短时间,形如 (13:04:06) 2.2 短日期,形如 (2003-12-05) 2.3 长时间,形如 (2003-12-05 13:04:06) 2.4 只有年和月。形如(2003-05,或者2003-5) 2.5 只有小时和分钟,形如(12:03) 3、表单类 3.1 所有的表单的值都不能为空 3.2 多行文本框的值不能为空。 3.3 多行文本框的值不能超过sMaxStrleng 3.4 多行文本框的值不能少于sMixStrleng 3.5 判断单选框是否选择。 3.6 判断复选框是否选择. 3.7 复选框的全选,多选,全不选,反选 3.8 文件上传过程中判断文件类型 4、字符类 4.1 判断字符全部由a-Z或者是A-Z的字字母组成 4.2 判断字符由字母和数字组成。 4.3 判断字符由字母和数字,下划线,点号组成.且开头的只能是下划线和字母 4.4 字符串替换函数.Replace(); 5、浏览器类 5.1 判断浏览器的类型 5.2 判断ie的版本 5.3 判断客户端的分辨率 6、结合类 6.1 email的判断。 6.2 手机号码的验证 6.3 身份证的验证 二、功能类 1、时间与相关控件类 1.1 日历 1.2 时间控件 1.3 万年历 1.4 显示动态显示时钟效果(文本,如OA中时间) 1.5 显示动态显示时钟效果 (图像,像手表) 2、表单类 2.1 自动生成表单 2.2 动态添加,修改,删除下拉框中的元素 2.3 可以输入内容的下拉框 2.4 多行文本框中只能输入iMax文字。如果多输入了,自动减少到iMax个文字(多用于短信发送) 3、打印类 3.1 打印控件 4、事件类 4.1 屏蔽右键 4.2 屏蔽所有功能键 4.3 --> 和<-- F5 F11,F9,F1 4.4 屏蔽组合键ctrl+N 5、网页设计类 5.1 连续滚动的文字,图片(注意是连续的,两段文字和图片中没有空白出现) 5.2 html编辑控件类 5.3 颜色选取框控件 5.4 下拉菜单 5.5 两层或多层次的下拉菜单 5.6 仿IE菜单的按钮。(效果如rongshuxa.com的导航栏目) 5.7 状态栏,title栏的动态效果(例子很多,可以研究一下) 5.8 双击后,网页自动滚屏 6、树型结构。 6.1 asp+SQL版 6.2 asp+xml+sql版 6.3 java+sql或者java+sql+xml 7、无边框效果的制作 8、连动下拉框技术 9、文本排序 10,画图类,含饼、柱、矢量贝滋曲线 11,操纵客户端注册表类 12,DIV层相关(拖拽、显示、隐藏、移动、增加) 13,TABLAE相关(客户端动态增加行列,模拟进度条,滚动列表等) 14,各种<object classid=>相关类,如播放器,flash与脚本互动等 16, 刷新/模拟无刷新 异步调用类(XMLHttp或iframe,frame)

28,409

社区成员

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

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