asp+|下拉|下拉式清單|顯示 在上一次我介紹了資料庫與flash 串連方式.在這裡,這一方面的我就不多說了....
還有ASP中的代碼.我也略過不說.就只是貼出來...
<!--#include file="conn.asp"-->
<%
dim rsBiClass,outBigClass,outBigClassID
sql="select * from bigclass"
set rsBigClass=server.CreateObject("adodb.recordset")
rsBigClass.open sql,conn,1,1
do while not rsBigClass.eof
outBigClass=outBigClass&rsBigClass("bigClass")&"/"
outBigClassID=outBigClassID&rsBigClass("id")&"/"
rsBigClass.movenext
loop
response.write ("outBigClass="&outBigClass&"&")
response.write ("outBigClassID="&outBigClassID)
rsBigClass.close
set BigClass=nothing
conn.close
set conn=nothing
%>
儲存為readBigClass.asp <!--#include file="conn.asp"-->
<%
dim bigid,outSmallClass
bigid=request.Form("bigid")
sql="select * from smallclass where bigid="&bigid
set rsSmallClass=server.CreateObject("adodb.recordset")
rsSmallClass.open sql,conn,3,3
do while not rsSmallClass.eof
outSmallClass=outSmallClass&rsSmallClass("smallclass")&"/"
outSmallClassPic=outSmallClassPic&rsSmallClass("pic")&"/"
rsSmallClass.movenext
loop
response.write ("outSmallClass="&outSmallClass&"&")
response.write ("outSmallClassID="&outSmallClassPic)
rsSmallClass.close
set rsSmallClass=nothing
conn.close
set conn=nothing
%>
儲存為readSmallClass.asp, 相信大家都看得懂這段ASP代碼.如果不懂的話.跟幀後.我再注說明了.
--------------------------------------------------------------------------------
現在就進入到flash裡面去編程了.
從組件中找現個下拉式清單,拉入兩個到情境中.將其分別命名為myBigCmb,mySmaCmb
在第一幀中寫上:
System.useCodepage = true;
var readBigL = new LoadVars();//定義一個LoaVars類對像.
readBigL.load("readBigClass.asp");//載入readBigClass.asp頁面.
readBigL.onLoad = function(su) {
if (su) {
//載入readBigClass.asp成功
_root.gotoAndPlay(2);
}
};
stop();//這第二幀的大部分內容在上個幀子中都用到過.無非就是從資料庫取出資料,把資料分別放進定義好的數組裡面去.
第二幀:
var bigClassA = new Array();
var bigClassIDA = new Array();
for (i=0; i<readBigL.outBigClass.length; i++) {
bigClassA = readBigL.outBigClass.split("/", i);
bigClassIDA = readBigL.outBigClassID.split("/", i);
}
for (j=0; j<bigClassA.length; j++) {//這是把大類放進第一個下拉式清單中.
myBigCmb.addItem({label:bigClassA[j], data:bigClassIDA[j]});//這句是為下拉式清單添加資料,如果不是很清楚就找一下組件教程來學一下:)
}
intiItem = myBigCmb.selectedItem.data;//這是獲得第一個下拉式清單的最初顯示的那個值,如果不加這個.那麼.一運行那個flash,第二個下拉式清單會沒有值.
getSmallClass(intiItem);
//這個getSmallClass()是一個自訂函數.後面再介紹.它的功能就是從資料庫中取得被選中的大類相對應的小類的值.把值取出來後再把其值賦到第二個下拉式清單.
//--------大類的change----------------------------------------
my = {};
my.change = function(cmb) {//這是大類也就是第一個下拉式清單的change事件.
bigidf = cmb.target.selectedItem.data;//獲得第一個下拉式清單中被選中的選項的data值.
getSmallClass(bigidf);
//這裡再調用自訂函數.這裡就是當大類一變,就從資料庫中取出相對應的小類的值,同時把值取出來後再把其值賦到第二個下拉式清單.
};
//--------從資料庫裡取得小類的值-----------------
function getSmallClass(bigidf) var smallClassSV = new LoadVars();
var smallClassLV = new LoadVars();
smallClassSV.bigid = bigidf;
//注意這裡的寫變數的方式用了smallClassSV.bigid,如果不加前面的smallClassSV,那麼bigid的值就不會傳到被載入的ASP檔案裡
smallClassSV.sendAndLoad("readSmallClass.asp", smallClassLV, "POST");
//這裡用到了這個sendAndLoad方法來載入頁頁.同時把結果返回到smallClassLV類裡面來.
smallClassLV.onLoad = function(su) {
//注意這裡的onLoad 事件是smallClassLV的,而不是smallClassSV的(剛開始用這個方法時,就是這裡卡了我很^_^久)
if (su) {
_global.smallClass = smallClassLV.outSmallClass;
_global.smallClassID = smallClassLV.outSmallClassID;
setSmallClass();
//這裡調用了另一個自訂函數,這個函數的作用是為第二個下拉式清單賦值,將smallClassLV接收來的資料放到第二個下拉式清單中.
} else {
aa.text = "資料連線不成功";
}
};
}
//----把小類的值放到下拉式清單中----------------------------------------
function setSmallClass() {{//這個就是自訂函數.其作用就是為小類(第二個下拉式清單)賦值
//如果大家看得懂上面的,那麼下面的想必是不用再作說明了吧...呵呵....
var smallClass = _global.smallClass;
var smallClassID = _global.smallClassID;
var smallClassA = new Array();
var smallClassIDA = new Array();
for (i=0; i<smallClass.length; i++) {
smallClassA = smallClass.split("/", i);
smallClassIDA = smallClassID.split("/", i);
}
mySmaCmb.removeAll();
//清除在這個下拉式清單中的原來的值.
for (j=0; j<smallClassA.length; j++) {
mySmaCmb.addItem({label:smallClassA[j], data:smallClassIDA[j]});
}
picname = mySmaCmb.selectedItem.data;//這個是取得第二個下拉式清單的最始值.
loadpic(picname);//調用載入圖片的函數.
}
//---------小類的change-------------------------------
mys = {};
mys.change = function(cmb) {
//這是小類的change事件
sid = cmb.target.selectedItem.data;//當小類的選中值(也就是selectedItem)發生改變時,取得小類的選中的data值.
loadpic(sid);//調用載入圖片的值,小類一發生變化,那麼相對應的顯示的圖片也是要變化的.
};
//-------------載入外部圖片------------------------------
function loadpic(picname) {//這個就是載入圖片的函數了.
_root.createEmptyMovieClip("picmc", 0);//建立一個空白影片剪輯.
_root.picmc._x = 200;
_root.picmc._y = 100;//設定空白影片的位置.
_root.picmc.loadMovie(picname);//載入圖片,注意裡面的picname是當調用這個函數時,所傳進入進來的(其實就是圖片名字)
}
myBigCmb.addEventListener("change", my);//添加下拉式清單的change事件.
mySmaCmb.addEventListener("change", mys);
stop();
//OK,have a try!