これに関するいくつかの投稿を読んだ後、多くのことを学んだので、それを皆さんと共有したいと思います。
その過程で、Flash は単なる表示機能になりましたが、他の人の記事を読んで、ページングは非常に簡単に実装できるように感じました。
基本的にはxmlで送信します。
表示にはリストコンポーネントとデータグリッドの両方を使用できますが、コンポーネントを使用するのは面倒なので、ここではダイナミックテキストを使用します。
それで私は愚かな方法を使いました、他に方法がなかった、より良い方法が見つかりませんでした~~~
以下のコードの list[..] はダイナミック テキストの名前で、一度に 15 項目が表示されます。
//表示プログラムは以下の通りです:
//フレーム名 "list"
停止();
var logList = 新しい XML();
var ログルート;
var page:Number; //現在のページ
var Tpage:Number // 合計ページを保存します。
var Tnum:Number; //ログの総数
var logname:String //ログカテゴリ名;
ヴァルテンプ。
var i:Number;
//ここでは配列を使用して対応する ID 番号を格納します。コンポーネントを使用する場合は、それほど面倒なことは必要ありません。
var ids = new Array(15)
//ページをめくる 2 つのボタン
bn_u.enabled = false;
bn_d.enabled = false;
if (page == null または page<1) {
ページ = 1;
}
//----------------------------
//関数をクリアします。
関数 myclear() {
for (i=1; i<16; i++) {
id[i-1] = 0;
list["lbn"+i]._visible = false;
list["ltitle"+i].text = "";
list["lauthor"+i] = "";
list["ltime"+i] = "";
}
}
//-----------------------------------------------------
//-----------------------------------------------------
myclear();
pageInfo.text = "データを読み取り中...";
logList.ignoreWhite = true;
logList.load("Tree_list.asp?log_cat="+cat_id+"&page="+page);
//------------------------------------------------
//データ取得関数
関数 logFunc(e) {
if (e) {
ログルート = logList.firstChild;
ログ名 = logroot.attributes.logname;
Tpage = logroot.attributes.Tpage;
Tnum = logroot.attributes.Tnum;
temp = logroot.firstChild;
list.ltitle1.text = Ftitle(temp.firstChild.nodeValue, 22);
list.lauthor1 = temp.attributes.author;
list.ltime1 = temp.attributes.Addtime;
ids[0] = temp.attributes.id;
i = 1;
list.lbn1._visible = true;
//ループしてノードを読み取ります
while (temp.nextSibling != null) {
temp = temp.nextSibling;
i++;
// 別の方法で表示されている場合は、変更してください。
ids[i-1] = temp.attributes.id;
list["lbn"+i]._visible = true;
list["ltitle"+i].text = Ftitle(temp.firstChild.nodeValue, 22);
list["lauthor"+i] = temp.attributes.author;
list["ltime"+i] = temp.attributes.Addtime;
}
pageInfo.text = logname+"ログの合計"+Tnum+"記事の合計"+Tpage+"現在のページは "+page+"ページ"+"15/ページ";
bn_u.enabled = true;
bn_d.enabled = true;
} それ以外 {
pageInfo.text = "現在ログはありません。";
list.ltitle1.text = "データの読み取りエラー。管理者に連絡してください!";
}
}
//タイトルが長すぎることを懸念したカスタム形式のタイトル関数
関数 Ftitle(s, n) {
if (長さ>n) {
s = s.substring(0, n-1)+"...";
}
を返します。
}
logList.onLoad = logFunc;
//-------------------------------------
//ボタンアクション
Bn_up = 新しいオブジェクト();
//ボタンイベント、ページサイズがこの値を超えているかどうかを判断します
Bn_up.click = function(evt) {
if (ページ>1) {
_root.page--;
gotoAndPlay("サイクル");
} それ以外 {
停止();
}
};
Bn_d = 新しいオブジェクト();
Bn_d.click = function(evt) {
if (ページ<Tページ) {
_root.page++;
gotoAndPlay("サイクル");
} それ以外 {
停止();
}
};
bn_u.addEventListener("クリック", Bn_up);
bn_d.addEventListener("click", Bn_d);
「サイクル」を表す単語は 1 つだけです。
gotoAndPlay("リスト");
// 単純なループを形成する
Tree_list.asp:
//log は私のログ テーブル、log_cat は分類テーブルの下の ASP です。これは非常に明確です。
<?xml version="1.0"coding="gb2312"?>
<%
Response.ContentType = "テキスト/xml"
Response.CacheControl = "キャッシュなし"
Response.AddHeader "プラグマ"、"キャッシュなし"
応答.期限切れ = 0
dim log_cat,page,pageSize,Tnum,Tpage,log_name
page=TreeRequest("ページ",1)
log_cat=TreeRequest("log_cat",1)
ページサイズ=15
callTree_rs
log_cat=0 または log_cat="" の場合
sql="書き込み時刻 DESC,log_ID DESC によるログ順序から * を選択"
それ以外
sql="select * from log,log_cat where log.cat_id=log_cat.ID および cat_id="&log_cat&" は write_time DESC,log_ID DESC 順に並べます"
次の場合に終了
rs.open SQL,conn,1,1
rs.PageSize=ページサイズ
Tnum=rs.RecordCount
Tpage=Int(Tnum/pageSize*-1)*-1
ページ = 1 の場合、ページ = 1
Tnum<>0 の場合、rs.AbsolutePage=page
log_cat=0 または log_cat="" の場合
log_name="[すべてのカテゴリ]"
それ以外
log_name="["&rs("猫名")&"]"
次の場合に終了
'以下の出力xml
'------------------------------------------------
response.write("<Tree logname='"&log_name&"' Tnum='"&Tnum&"' Tpage='"&Tpage&''>")
もし rs.eof なら
rs.close
それ以外
rs.eof および pageSize>0 ではないときに実行します
response.write("<Trees author='"&rs("log_author")&"' Addtime='"&rs("write_time")&"' id='"&rs("log_ID")&"'>")
response.write("<![CDATA["&rs("log_tittle")&"]]></Trees>")
pageSize=pageSize-1
rs.movenext
ループ
rs.close
次の場合に終了
//rsを閉じる
callTree_rsclose
callTree_conclose
response.write("</Tree>")
%>
このコードは非常に厄介なようです。これを実行している友人の役に立てば幸いです。
出典: www.flashbank.cn