- ベストアンサー
ASPで配列の受け渡し方法について
- ASPで配列の値を次のページに渡す方法がわかりません。
- 現在、配列の値をhiddenフィールドに設定して次のページに送信していますが、うまく受け取れません。
- Request.Formを使用して値を取得していますが、配列の値までは取得できません。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
そういったことをしたいのであれば 送信ボタンのonclickイベントで細工することになりそうですよ 出力されているHTMLが <input type="checkbox" name="ck"> といった具合なら <input type="submit" onclick="mySubmit()"> <script type="vbscript"> Function mySubmit() dim ck for each ck in document.getbyElementsByName("ck") if not ck.checked then ck.checked = true ck.value="off" end if next mySubmit = true End Function </scriopt> といった具合です #ただし 一瞬チェックボックスにすべてチェックがつくのが見えてしまいます
その他の回答 (4)
- redfox63
- ベストアンサー率71% (1325/1856)
仕込み方は一緒ですよ 名前フィールドを Response.write( "<td><input type='text' name=tx value='" + rs("Name").Value + "'></td>" + vbcrlf ) といった具合に仕込みます 受け側で Dim aaa, tx aaa = Split(Request.Form("aaa"), ", ") tx = Split(Request.Form("tx"), ", ") として取得します これで aaaとtxの配列を比較して違うものは変更されたデータとなりますよ
お礼
ありがとうございます。 取得はできそうです。 ちなみに下のほうでチェックボックスを取得する際に、チェックしてValueを設定しないと、”on”が送られますが、チェックしないものにはoffなどおくることはできないのでしょうか?offでなくてもチェックしてない場合値を送れればよろしいのですが・・・。 何度もすみません・・・。
- redfox63
- ベストアンサー率71% (1325/1856)
同じ要領で受け渡しは可能ですよ Response.Write( "<input type='checkbox' name='ck' value='" & _ CStr(rs("コード")) & '>" ) といった具合に チェックボックスを作成します 受け側では Dim arCode arCode = Split( Request.Form("ck"), ", ") といった具合で チェックのついた物だけのコードを取得できます # .Itemは無くても良いみたいです ...
お礼
お世話になります、できましたありがとうございます! チェックした値だけとれるのは理想的でした。 最後にお聞きしたいのですが、コードはValueに設定してチェックしたものがとれるのですが、名前を手修正でテキストを変更すると次のページに持っていくことができないのですが、これはいい方法ありませんでしょうか? 流れとしましては検索後、コード、名前、チェックボックスが表示されているページで名前を変更したあと、処理ボタンを押して変更した名前を次ページに受け渡ししたいのですが、できないため処理できないのです。チェックしたものだけコード、変更した名前をもっていければなんとでもなるのですが・・・。 ご存知でしたらご教授お願いいたしますm(__)m
- redfox63
- ベストアンサー率71% (1325/1856)
1箇所訂正 受け側の配列構築は A = Split( Request.Form("aaa").Item, ", " ) です # .Itemが抜けてしまいました m(__)m
お礼
ご回答ありがとうございます! 上手く値の受け渡しができました。 便乗してさらに質問なのですが、値が固定されていれば今回ので問題ないのですが、前のページで値を変更した場合にはうまく渡せません・・・。 具体的に書きますと、抽出画面で名前を指定すると、指定された名前を元に個人コード、名前、チェックボックスの3つの項目を抽出しています。件数は基本的に複数でます。コードは固定です、名前は任意に変更できます、さらにチェックボックスにチェックついているものだけ変更ボタンを押したときに次のページでASPを使って処理しようとしているのですが、チェックボックスを変更した場合(trueかflase)その値が引き渡せないのです(泣)チェックボックスの値を持ち越すにはどうしたらよろしいでしょうか? どうかよろしくお願いいたします。
- redfox63
- ベストアンサー率71% (1325/1856)
配列全体を hiddenひとつでは無理なようですよ <% For n=0 to Cnt Response.Write("<input type='hidden' name='aaa' value=" & A(n) & ">") next n %> といった サーバサイドスクリプトで aaaを複数設定します 受け側で Dim A, n A = Split( Request.Form("aaa"), ", " ) ' Splitの第2引数は 『,』とスペースです といった具合で受け取ります
お礼
スクリプトでやるしかなさそうですね・・・。 しかしながら大変参考になりました、初期の質問内容からずれてきているので一旦締め切らせていただきます。また質問ありましたらよろしくお願いいたしますm(__)m