读书人

网上下的下拉联动插件!数据库是写在X

发布时间: 2013-03-26 09:54:34 作者: rapoo

网上下的下拉联动插件!数据库是写在XML文本文件里的。如何实现这样的功能?
下拉联动代码如下(已运用到我的页面里面):


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

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

这是所属工区的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>

[解决办法]
<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>


[解决办法]
对已有数据修改,你应该把保存的那个默认数据传递过来与其比较,跟这是所属工区的XML数据库文件这个没关系,这个只是读取所有的工区的数据,但你还保存的那个并不是在这个里面吧
[解决办法]
一样的,你那个我不知道你具体的东西

但原理是一样的
你的那个下拉的数据是怎么来的,是服务端程序循环出来的,还会用JS加载过来的
如果服务端程序循环出来的就直接if判断,如果是JS加载过来的,那应该是在JS里进行判断
[解决办法]
<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>
===================哥我算是深夜白干了!后两个值没有就留空。
[解决办法]
我那个是一个xml文件实现无限级,从你的代码上看那是需要很多个xml文件组成的无限级下拉菜单。每个菜单选择后取得相应的值给下级菜单,对应加载MaterialClass'+this.options[this.selectedIndex].value+'.xml'
这种方法难以控制,加载文件多容易出错。

读书人网 >ASP

热点推荐