

検索画面を作成しております。
検索画面:a.asp
表示画面:b.asp
のような形です。
a.aspからb.aspにPOSTで送信します。
b.aspの表示で検索結果の該当件数が多いときは1ページに表示させる行数を10行くらいにしたいと思っております。
そこで、先頭・前へ・次へ・最終などのリンク(ボタンでも可)を作ります。
この時、各ページへの移動時に「b.asp?xxx=yyy」などの表示にしたくないのですが可能でしょうか?
可能であればどようのうにしたら良いのでしょうか?
送信する情報量が多いのですが、パラメータは送信できる情報量に限界があると聞いたことがあります。
どなたかご教授下さい。
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
お世話になります。
> 1つ目、javascriptをあまり使用した事がないのですが、onclickイベントの時に
> ・fromタグにaction="b.asp"を書き込む
> ・javascript内でdocument.フォーム名.action='b.asp';とする
> これはどちらでも構わないのでしょうか?
前に投稿した時点では、javascript にて hidden フィールドに値を入れるつもりでやってたのですが
今回の方法ではその必要がなくなりました。
ちなみに、どちらでも同じです。
2つ目、3つ目は今回のソースを参考にして下さい。
このソースでやっていることは、ローカルマシンの中にある SQL Server 2000
の NorthWind データベースに接続して、Customers テーブルの値を取得し、
10 件毎に表示をしています。
最初のページになったら前へボタンを使えなくし、
最後のページになったら次へボタンを使えなくしています。
※インデントを表示するため、全角空白 2 つでインデントしています。
実際に試される場合は 全角空白 2 つを タブなどに置き換えてください。
■paging.asp
<%@ Language=VBScript %>
<%
Option Explicit
Dim connection
Dim rs
Set connection = Server.CreateObject("ADODB.Connection")
connection.Open "Driver={SQL Server};Server=(local);Database=Northwind;Uid=test_sql;Pwd=test_sql;"
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open "SELECT TOP 100 CustomerID, CompanyName FROM Customers ", connection, 1, 1
rs.PageSize = 10
Dim pageNumber
If Request.Form("NowPageNumber") = "" Then
pageNumber = 1
Else
Dim buttomName
buttomName = Request.Form("myButton")
Dim nowPageNumber
nowPageNumber = CInt(Request.Form("NowPageNumber"))
Select Case buttomName
Case "先頭"
pageNumber = 1
Case "前へ"
pageNumber = nowPageNumber -1
Case "次へ"
pageNumber = nowPageNumber +1
Case "最終"
pageNumber = rs.PageSize
End Select
End If
If pageNumber > 0 Then
rs.AbsolutePage = pageNumber
End If
%>
<html>
<head>
<title><%=pageNumber %>/<%=rs.PageSize %> ページを表示しています。</title>
</head>
<body>
<%
If pageNumber > 0 Then
Response.Write("<table border='1'>")
Response.Write("<tr><th>CustomerID</th><th>CompanyName</th></tr>")
Dim counter
counter = 0
Do Until rs.EOF Or counter >= rs.PageSize
Response.Write("<tr><td>")
Response.Write(rs("CustomerID"))
Response.Write("</td><td>")
Response.Write(rs("CompanyName"))
Response.Write("</td></tr>")
rs.MoveNext()
counter = counter + 1
Loop
Response.Write("</table>")
Else
Response.Write("データはありません")
End If
rs.Close()
%>
</table>
<form method="post" action="paging.asp">
<input type="hidden" name="NowPageNumber" value=<%=pageNumber %>>
<input type="submit" name="myButton" value="先頭">
<input type="submit" name="myButton" <% If pageNumber = 1 Then Response.Write("disabled=true") %> value="前へ">
<input type="submit" name="myButton" <% If pageNumber = rs.PageSize Then Response.Write("disabled=true") %> value="次へ">
<input type="submit" name="myButton" value="最終">
</form>
</body>
</html>
naganaga_001様 ご回答ありがとうございます。
連絡が遅くなってしまいましたが、無事ページ間の移動を実現させる事ができました。
今回はソースまで提供していただき本当にありがとうございました。大変勉強になりました。
今後ともよろしくお願いします。
No.2
- 回答日時:
お世話になります。
> Request("page")がうまく機能していないっぽいです。
それは POST パラメータや GET パラメータでそもそも渡してないからでは。。。
Form タグの中に こんな感じで hidden フィールドをいれて
<input type="hidden" name="page" value="0">
<input type="hidden" name="buttonName" value="">
Form タグの各ボタンから 以下の様な javascript を呼び出せばよいのでは。
<!--
<script type="text/javascript">
function postBack(pageNum, btnName){
document.フォーム名.page.value = pageNum;
document.フォーム名.buttonName.value = btnName;
document.フォーム名.submit();
}
// -->
</script>
ボタンはこんな感じで
<input type="button" value="先頭" onClick="postBack(0, 'start')">
サーバー側の判定ロジックはこんな感じで
If IsNumeric(Request.Form("page")) Then
If Request.Form("buttonName") = "start" Then
'先頭ボタンの処理
Else If Request.Form("buttonName") = "back" Then
'前へボタンの処理
End If
End If
naganaga_001様 度々ご回答ありがとうございます。
教えていただいたやり方でチャレンジしてみたのですがダメでした。。
ボタンをクリックするとステータスバーに「ページでエラーが発生しました。」とでます。
いくつか質問させていただいてよろしいでしょうか?
1つ目、javascriptをあまり使用した事がないのですが、onclickイベントの時に
・fromタグにaction="b.asp"を書き込む
・javascript内でdocument.フォーム名.action='b.asp';とする
これはどちらでも構わないのでしょうか?
2つ目、ボタン設置時の話ですが、
<input type="button" value="前へ" onClick="postBack(document.フォーム名.page.value, 'back')">
のような形で現在のページの値を取得する事はできるのでしょうか?
できないのであればどうすればよいのでしょうか?
あと、最終ページの取得方法もわかりません。
3つ目、変更する前まで記述していた「ObjRS.AbsolutePage = page」という行で「引数が間違った型、または許容範囲外であるか、競合しています。」というエラーになります。これは、pageの値が正しく取得できていないからなのでしょうか?
質問ばかりで申し訳ないのですが、よろしくお願いします。
No.1
- 回答日時:
お世話になります。
自分の ASP 自身に POST したいという解釈で間違っていなければ
以下のような感じでできますよ。
■postback.asp
<%
If Request.Form("PostBack") <> "" Then
Response.Write("PostBack!!!")
End If
If Request.Form("PostBack2") <> "" Then
Response.Write("PostBack2!!!")
End If
%>
<html>
<head><title>test</title></head>
<body>
<form name="testform" action="postback.asp" method="post">
<input type="submit" name="PostBack" value="PostBack" />
<input type="submit" name="PostBack2" value="PostBack2" />
</form>
</body>
</html>
naganaga_001様 ご回答ありがとうございます。
>自分の ASP 自身に POST したいという解釈で間違っていなければ
>以下のような感じでできますよ。
まさにその通りです。自分自身にPOSTしたかったのです。
naganaga_001様にご教授頂いたおかげで、解決に一歩近づいたのですが、残念ながら私の力不足でまだ解決に至っておりません。
b.aspは表示のみのページなので、formタグのなかにhiddenで値を持たせ送信してみたのですが、ページ移動がうまくいきません。
formタグの中に、以下のような4つのボタンを設置しました。
<input type="submit" name="start" value="先頭">
<input type="submit" name="back" value="前へ">
<input type="submit" name="next" value="次へ">
<input type="submit" name="end" value="最終">
ページの判定は以下のような形にしてみました。
if IsNumeric(Request("page")) Then
page = Cint(Request("page"))
backpage = page - 1
nextpage = page + 1
else
page = 0
end if
if page = 0 or Request.Form("start") <> "" then
page = 1
end if
if page > 1 and Request.Form("back") <> "" Then
page = backpage
end if
if page < ObjRS.PageCount and Request.Form("next") <> "" Then
page = nextpage
end if
if page > ObjRS.PageCount or Request.Form("end") <> "" then
page = ObjRS.PageCount
end if
ObjRS.AbsolutePage = page
Request("page")がうまく機能していないっぽいです。
すいません、アドバイスお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelマクロの表示のExcel内をfindで検索 3 2022/06/15 20:07
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- 防犯カメラ・監視カメラ・小型カメラ VHSを高画質な動画ファイルにしたいです。 3 2022/05/06 12:08
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- Outlook(アウトルック) メールの受信受信トレイしか表示されない 1 2022/08/17 06:19
- メルカリ <メルカリShops>消費者庁による販売許可の出ている機能性表示食品?の調べ方から 1 2022/11/24 17:46
- その他(パソコン・スマホ・電化製品) とある情報が知りたく、検索して表示されたリンクをクリックしてページを見て、そこに知りたい情報の説明の 3 2022/11/26 18:55
- デスクトップパソコン パソコン マルチスクリーン 3画面 全画面表示で動画を楽しみたい。 2 2023/07/21 08:40
- Chrome(クローム) Chromeの描画領域を2分割して異なるスクロール位置を同時に表示させることはできますか 1 2023/03/01 16:53
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
このQ&Aを見た人はこんなQ&Aも見ています
-
URLのパラメータをGETのままで非表示にしたい
PHP
-
クエリ文字列の?"の後を非表示にする"
HTML・CSS
-
アドレスバーに引数を表示させないことは可能?
Java
-
-
4
ASPで画面間のパラメタ受け渡し
Microsoft ASP
-
5
[Java] Edgeでのアドレスバー非表示について
JavaScript
-
6
アドレスバーのないウィンドウの開き方。
Microsoft ASP
-
7
tableの任意行にfocusをあてる
JavaScript
-
8
Webページ上のボタン等の位置を移動したい。
Microsoft ASP
-
9
TextChangeイベントが発生しない
JavaScript
-
10
意味不明の実行時エラーで困っています
その他(プログラミング・Web制作)
-
11
【ASP.NET】 Buttonコントロールについて
その他(プログラミング・Web制作)
-
12
【C#】Page_Loadさせない方法について
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SJISで、全角文字Aの文字コード...
-
スイッチが二台あり、別々のア...
-
エクセルに張り付けた写真のフ...
-
asp.netにてgridviewの列を動的...
-
phpのファイルがブラウザで開か...
-
onedrive にexcelファイルをア...
-
バッチ(bat)でリストファイルか...
-
Windows10にデュアルブートでXP...
-
連想配列を配列に格納したいで...
-
SPO2測定
-
高校1年生情報の問題について。
-
エクセルのマクロについて教え...
-
インドe-Visa 承認書のApplicat...
-
SPIの非言語の割合と比が難しく...
-
SPIの対策は参考書でやるべきか?
-
LEDで電光掲示板に「A B C D E...
-
One Driveへのアクセス
-
LINE APIからasp.net の web サ...
-
Windows10エンタープライズ版をインス...
-
Ip アドレスて日毎に変わるんで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
遷移先のURLにパラメータを表示...
-
半角カナだけが入力できる<inpu...
-
onBlur→検索→結果の表示
-
データの更新(修正)ができません
-
入力フォームの値をSQLのクエリ...
-
確認画面を出す
-
<input>でonblur=がある場合の入力
-
インラインフレーム内を送信する
-
テキストボックスの簡易入力
-
[ASP]URL付加情報を転用した...
-
教えてください!
-
VBで言うところのコントロール...
-
HTMLの値の渡し方について質問...
-
ACCESSのレポートの表示...
-
フォームのtextareaにnl2brを使...
-
C#のRichTextBoxで表示行数を取...
-
ASP.netで、CheckBoxListのSele...
-
aspxでIFみたいなことがしたい
-
入力テキスト内で改行コードが...
-
テキストボックスにマクロでメ...
おすすめ情報