标题:网上下的下拉联动插件!数据库是写在XML文本文件里的。如何实现这样的功能? ...
取消只看楼主
lxb0592
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2012-5-28
结帖率:86.67%
已结贴  问题点数:20 回复次数:15 
网上下的下拉联动插件!数据库是写在XML文本文件里的。如何实现这样的功能?
代码如下!
程序代码:
多级联动下拉选择框,动态获取下一级,每一级数据为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>
搜索更多相关主题的帖子: 一级 文本文件 如何 动态 
2012-11-13 20:46
lxb0592
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2012-5-28
得分:0 
这个是添加数据时的SCRIPT代码,应该是加载XML数据库作用,那么在修改数据时这段代码做和修改啊?
程序代码:
<script>
var m_oXMLDoc = [color=#0000FF]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>
[/color]我曾尝试加了<select name="MaterialClass1" ChildSelectName="MaterialClass2"><option value="<%=rs("card")%></option></select>
<%=rs("card")%是这条数据本身的值。但没成功。应该还是要修改SCRIPT代码吧!


[ 本帖最后由 lxb0592 于 2012-11-14 16:34 编辑 ]
2012-11-14 16:33
lxb0592
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2012-5-28
得分:0 
回复 4楼 dzt0001
试试看! 谢谢啊!
2012-11-14 21:42
lxb0592
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2012-5-28
得分:0 
回复 4楼 dzt0001
朋友在调用代码改怎么修改?
<select name="MaterialClass1" ChildSelectName="MaterialClass2"></select>
我在<select name="MaterialClass1" selectedValue="05" ChildSelectName="MaterialClass2"></select>
好像05的那个工区还是显示不来。还是默认第一个。
这里该怎么改?
2012-11-15 10:44
lxb0592
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2012-5-28
得分:0 
回复 7楼 dzt0001
大哥非常感谢您! 在您指导下,解决了这个问题!(这个下拉联动插件非常实用,如果因为这个问题而放弃可惜)
BindSelect( m_sXmlSrc, "MaterialClass1", "<%=数据库保存的值%>");
在Init()函数你提示的位置,我加入数据库保存的值的代码,就解决了。再次感谢您! 非常激动。
2012-11-15 17:41
lxb0592
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2012-5-28
得分:0 
感谢 dzt0001高手朋友!在他指导下! 解决的了这个问题。
2012-11-15 17:44
lxb0592
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2012-5-28
得分:0 
回复 7楼 dzt0001
晕死!忘了还有个第二级子下拉框也要把原来的数据传递过来。也没搞出来!兄弟再麻烦您一下,该怎么再改下?是还要修改前面的SCRIP代码?还是对下面的调用代码修改?

<select name="MaterialClass1" ChildSelectName="MaterialClass2"></select>
<select name="MaterialClass2" ChildSelectName="MaterialClass3"></select>
<select name="MaterialClass3"></select>
中间红色是第二级的调用下拉框。


下面是第二级的一个XML数据库文本文件
<?xml version="1.0" encoding="GB2312"?>
    <MaterialClasses>
        <MaterialClass MaterialClassCode="22" Description="鹰西THDS/TFDS/AEI"/>
        <MaterialClass MaterialClassCode="23" Description="贵溪上下行THDS"/>
        <MaterialClass MaterialClassCode="24" Description="弋阳东上下行THDS"/>
        
     </MaterialClasses>
2012-11-15 22:18
lxb0592
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2012-5-28
得分:0 
回复 7楼 dzt0001
BindSelect( m_sXmlSrc, "MaterialClass1", "<%=数据库保存的值%>");
SCRIPT代码中,好像没有对第二级下拉框类似 BindSelect( m_sXmlSrc, "MaterialClass2", "<%=数据库保存的值%>");这样的代码
2012-11-15 22:21
lxb0592
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2012-5-28
得分:0 
回复 12楼 dzt0001
哦!那能在SCRIPT代码中增加这一级下拉框的触发代码吗?
或者能在调用代码的(中间红色)做修改实现数据库值传递过来不?
select name="MaterialClass1" ChildSelectName="MaterialClass2"></select>
<select name="MaterialClass2" ChildSelectName="MaterialClass3"></select>
<select name="MaterialClass3"></select>
小弟麻烦您了!
2012-11-16 11:51
lxb0592
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2012-5-28
得分:0 
回复 14楼 dzt0001
不行!修改后,下拉框的数据值一直闪动!要的效果出不来!
2012-11-17 00:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-386948-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.083047 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved