• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ASP.NETのWebフォーム内で複数のテーブルを使用する方法を教えて下さい。)

ASP.NETのWebフォーム内で複数のテーブルを使用する方法

このQ&Aのポイント
  • ASP.NETのWebフォーム内で複数のテーブルを使用する方法について教えてください。
  • 検索フォームで押されたボタンによって検索キーを変える処理分岐の方法と、テーブルを追加表示する方法について教えてください。
  • ASP.NETのWebフォームで複数のテーブルを使い、検索フォームによって表示するテーブルを切り替える方法について詳しく教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

検索キーや検索方法を検索ページ側でプロパティまたはコントロールで参照できるようにします 言語はVB.NETとして回答します たとえば TextBox1に検索キー、HiddenField1に検索方法を格納するとします プロパティでやるなら 検索ページ側の VBファイルで Public Readonly Property myKey() as String   Get     return Text1.Text   End Get End Property public readonly property myProc() as String   Get     return HiddenField1.Value.ToString   End Get end Property といった具合にプロパティを準備します ボタンAのClickイベントで HiddenField1.Value = ButtonA.CommandName ボタンBのClickイベントで HiddenField1.Value = ButtonB.CommandName ボタンA・ボタンBの PostBackUrlプロパティを遷移先ページに設定 ボタンA・ボタンBのCommandNameプロパティを遷移先ページに渡したいデータを設定 遷移先ページのaspxをソースビューにして <@ Pasge Langage="VB" @>の次の行に 遷移元ページを示すディレクティブを追加します <%@ PreviousPageType VirtualPath="~/Search.aspx" %> これで Loadイベントなどで PreviusPageで検索設定ページを参照できます VirtualPathなどは適宜修正してください Loadイベントで PreviusPage.myKeyやPreviusPage.myProcなどでデータソースのSelectCommandなどを編集してください プロパティを遷移元ページに設定しないなら dim obnjText as TextBox objText = CType( PreviusPage.FindControl("TextBox1"), TextBox ) strSsqlCommand += "Where ['項目'] like '%" & objText.Txt & "%'" といった具合でコントロールを限定してデータを取得しましょう PlaseHolderのOn/Offなどの設定も PreviusPage.myProcで判断するとかだと思います 具体的に どのテーブルをどんな具合で表示したいのかを投稿してみましょう

earlgyreprince
質問者

お礼

すみません。。。 プロパティを遷移元ページに設定しない場合はサンプルでいう→SqlCommand comm = new SqlCommand("SELECT isbn,title,publish FROM books ORDER BY published DESC", db);をご教示頂いたソースでコントロールすると言う事でしょうか? 理解が乏しく申し訳ありません。 表示希望はこのサンプルのPage_Load時の一覧にテーブルが増えた感じです。 -------------------------------- booksカラム -------------------------------- books -------------------------------- books1 -------------------------------- books2 -------------------------------- booksの詳細が押下されたらbooksの一覧をbooks1の詳細が押下されたらbooks1の一覧を表示させたいです。 どうか宜しくお願い致します。

earlgyreprince
質問者

補足

redfox63さん ありがとうございます! ちょっと難しい感じがしてしまいました。。。 月曜日がんばって試してみます。 またご質問させて頂くと思いますが宜しくお願い致します。

その他の回答 (50)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.41

そのエラー『アプリケーション・・・』はどの時点から出ていたのでしょう 新規に『Webサイト』を作成したスケルトンの状態からですか 開発環境はなんでしょう? WinXP SP2 + VS2005でしょうか VS2005は SP1ですか 無印ですか 当方の環境は WinXP SP2 + VS2005 SP1ですが おっしゃるようなエラーに見舞われたことが無いので … インターネットセキュリティ関連のソフトを一時的に機能停止にしても状況の改善はありませんか? 『Label』『Button』が正解なのかは 作成したプロパティの内容次第だと思います ビルドエラーを解消しないと 今後の機能追加などが出来ないと思われます

earlgyreprince
質問者

補足

ありがとうございます☆ >そのエラー『アプリケーション・・・』はどの時点から出ていたのでしょう Webサイトを作成した時点では表示はなくアクションを起こすと表示されます。Webサイトの発行やF5の実行などです。 >開発環境はなんでしょう? WinXP SP2 + VS2005です。 VS2005はバージョン情報を見てもMicrosoft Visual Studio 2005 Version 8.0.50727.42としか書いてないので無印だと思います。 >インターネットセキュリティ関連のソフトを一時的に機能停止にしても状況の改善はありませんか? インターネットに繋がっていないのでFWは無効、セキュリティソフトはインストールされていない状態です。 >『Label』『Button』が正解なのかは 作成したプロパティの内容次第だと思います Public ReadOnly Property GetProcOne() As String Get Return TextBox1.Text End Get End Property と Public ReadOnly Property GetTypeOne() As String Get Return Button1.Text End Get End Property と作成致しました。 宜しくお願い致します。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.40

PreviousPageTypeディレクティブは 『aspx』ファイルの方です vbファイルではありません aspxファイルの2行目に記入してください プロパティは #20に類似した形で良いですよ TextBoxとボタンしかないので この2つからデータを取得できれば良いです 『アプリケーション ・・・』のエラー一覧の行ですが 赤丸なら エラーですし 黄色の三角なら警告です 警告の場合は 変な動作になる可能性もあるが 通常通り動作する可能性もあります エラーの場合は実行自体が出来ないはずなんですけど ・・・

earlgyreprince
質問者

補足

ありがとうございます☆ ビルドエラーが発生しました。続行して、最後に成功したビルドを実行しますか?と表示され「はい」を選ぶとエラー一覧には赤丸で『アプリケーション ・・・』のエラーが出ていても普通に表示されてしまいます。 さきほど、ご教示頂きましたソースを実行した所・・・ Label Button と表示されました。 よろしいのでしょうか? 宜しくお願い致します。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.39

『アプリケーション ・・・』と言うのは ワーニング(警告)ですか? エラーなら ボタン押下が出来ないかともいますが ・・・

earlgyreprince
質問者

補足

ありがとうございます。 >ブラウザのキャッシュが悪さしているのかも ・・・ キャッシュはクリアの状態でもエラーは出てしまいました。 >defualt.aspxに自作のプロパティを作成 ... (1) #20の様な具合でよろしいのでしょうか? 実行した所、表示はされましたが。 >PreviousPageTypeディレクティブを追加 vbファイルのLoadイベントの上に追加した所、<%@ の%に文字が有効ではありませんと並線が出るのですが場所を間違えていますでしょうか? >『アプリケーション ・・・』と言うのは ワーニング(警告)ですか? 出ているのはVS下のエラー一覧のエラーという赤いマークの方で出ております。 宜しくお願い致します。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.38

ブラウザのキャッシュが悪さしているのかも ・・・ IEのツール > インターネットオプション > 全般タブ 『インターネット一時ファイル』の『ファイルの削除』でテンポラリに溜まっているキャッシュをクリアしてみてください # ここが一番有力なように思いますけど … 旧来の手順なら動作するようですね では、defualt.aspxに自作のプロパティを作成 ... (1) 自作プロパティ … TextBox1.Textを返すものと ボタンのCommandNameを返すもの #37の手順で実行 結果確認 OKなら defualt2.aspxに PreviousPageTypeディレクティブを追加 #37手順で事項 結果の確認 default2.aspx.vbのLoadイベントに Label1.Text += "<BR>" + PreviousPage.GetProcOne() Label1.Text += "<BR>" + PreviousPage.GetTypeOne() を記述 実行、結果確認 なお GetProcOne、GetTypeOneは(1)で追加したプロパティです といった手順でエラーになる箇所が何処なのか確認しましょう

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.37

おかしいですね ・・・ VS2005で 新規のサイト(ASP.NETアプリ)を作成 WebFormを追加 ・・・ defualt2.aspx defualt.aspxに Textボックスとボタンを配置 ボタンの PostBackUrlを defualt2.aspx、CommandNameを検索実行 defult2.aspxにLabelコントロールを追加 defualt2.aspx.vbのPage_Loadイベントで if PreviousPage isnot nothing then label1.text = previousPage.GetType.toString End if defualt.aspxを選択しておいて F5キーで実行 ボタンを押して defualt2.aspxへ遷移するかを確認 defualt2.aspxに『ASP.defualt_aspx』と表示できるか確認

earlgyreprince
質問者

補足

ありがとうございます☆ おっしゃる通りコードを記述して実行してみた所、 アプリケーションレベル・・・のエラーは出ましたが defualt.aspxが表示されましたのでボタンを押下すると遷移してASP.defualt_aspxと 表示できました。 宜しくお願い致します!

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.36

aspx自体がWebアプリケーションとして機能していないのかも C:\Windows\Microsoft.net\Framework\v2.0.50727フォルダにある aspnet_regiis.exeをコマンドプロンプトなどで実行してみてください aspnet_regiis.exe -d aspnet_regiis.exe -i -dは aspxの機能削除 -iは aspxの機能設定 となります

earlgyreprince
質問者

補足

ありがとうございます! aspnet_regiis.exe -iで実行してインストールした所、ローカルホストにてアプリケーションの表示ができました。 VS2005 にて新しいWEBサイトを作成してファイルを置いた後再びビルドをしたのですがやはり「アプリケーションレベルを超えて ・・・」のエラーが出てしまいます。 localhostでアプリケーションが表示されると言う事であれば フォルダのアプリケーションは構成されているので別問題なのでしょうか? ご教示下さいませ。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.35

仮想ディレクトリのURLは作成する際にエイリアスをどのように設定したのかにより変わってきます IISのルートに対して C:\WebTest を仮想ディレクトリとして登録する場合 1) /Web/Test として公開したい場合は IISルートに対して Web仮想ディレクトリを作成 Web仮想でディレクトリに対して Test仮想ディレクトリを作成 と言った手順を踏みます 2) 単純に IISルートに C:\Web\Testを参照する仮想ディレクトリを作成する場合は ルートに対して仮想ディレクトリを作成すれば良いでしょう この場合 エイリアスで指定した文字列が URLになります たとえば Testと入力したなら http://localhost/Test となります やはり 仮想ディレクトリでアプリケーションが作成されていないのが原因のように思います left.aspxが表示できるのは IEのキャッシュが利いている可能性が高いです left.aspxを表示して F5きーで更新してみましょう たぶんエラーになるはずです 仮想ディレクトリのプロパティで アプリケーションを再設定してみてください

earlgyreprince
質問者

お礼

ご無沙汰しております。 1度OSを入れ替えlocalhostは見れる様になりました。 しかし、ASPXファイルを実行すると以下のエラーが出ました。 _________エラー(ここから)_____________ XML ページを表示できません XSL スタイル シートを使用した XML 入力は表示できません。エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。 -------------------------------------------------------------------------------- 無効な文字で名前が始まりました。リソース 'http://localhost/Web/test.aspx' の実行エラーです。ライン 1、位置 2 <%@ Page Language="VB" %> -^ _______エラー(ここまで)_______________ 普通のaspxファイルなのですが・・・ どの様な症状かおわかりになりますでしょうか? ちなみにVS2005Proをインストールしましたがそちらではこのファイルにエラーは出ていませんでした。 宜しくお願い致します。

earlgyreprince
質問者

補足

ありがとうございます! ネットワークの違う端末を使用して同じ事をした際にそちらは表示できました。。。 端末の問題の様な気が致します。 1度再設定してまたご報告させて頂きます。 すみません。 宜しくお願い致します!

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.34

left.aspx自体は実行可能なのですよね 検索文字列などを入力して『検索実行ボタン』を押した際に Webページでエラーが報告される と言う状況ですよね … IISマネージャでこのWebサイトのプロパティを表示させ 削除ボタン でアプリケーションを削除 一度 OKでプロパティページを閉じる もう一度プロパティページを表示して 作成 > OK 構成ボタン > マッピングタブ > 拡張子『.aspx』行を選択して『編集』 実行ファイルが『c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll』といった ASP.NET2.0用になっているか確認してください … なってるだろうな でなきゃ left.aspxが動かないわけだし

earlgyreprince
質問者

補足

ありがとうございます☆ 状況はおっしゃるとおりです。 確認した所、c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dllになっておりました。 あの・・・ 基本的な事で申し訳ないのですが・・・ C:\Web\testで仮想ディレクトリを作成した際には URLはhttp://localhost/Web/test/left.aspxでいいのでしょうか? http://localhost/test/left.aspxも試しましたが 要求されたURLは本ウェブでは見つかりませんでした。とエラーが出ました。 VWDは環境サーバーがあるので動くのですよね? Cドライブを直接見に行くURLは試した事がなかったエラーが出てびっくりしたのでお聞きしたかったのです。 仮想ディレクトリが原因かと思い、色々調べて作りなおしているのですがこんな状況です。 すみません。 宜しくお願い致します。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.33

もしかして ASP.NET 1.0/1.1 いわゆる VS.NET2002/2003がインストールされていますか ランタイムだけといった可能性もありますが IISマネージャで現在開発中のサイトのプロパティを表示させて ASP.NETタブを確認してみてください VWDの場合 ASP.NETのバージョンが『2.0.50727』になっていないといけません

earlgyreprince
質問者

補足

ありがとうございます☆ ASP.NETタブを確認した所、バージョンは『2.0.50727』になっておりました。 .NET Freamwork1.0が入っていなかったのですが関係ないでしょうか? SDKをインストールし直しとかした方が宜しいでしょうか? 脱線したご質問になり申し訳ございません。 宜しくお願い致します。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.32

ん~ … 編集してないですか 困りましたね 当方も同じ状態なのですが エラー無くすんなり動作してしまいます myKeyOne/myProcOneに修正してもまだエラーになってしまうんですよね …

earlgyreprince
質問者

補足

なにが問題か分からないですね。。。 Webサイトのビルドをした時、実はWeb.Configのエラーでビルドができなかったのです。 MSDNに投稿しましたが解決はできませんでした。 こちらの環境の問題なのでしょうか? 当方の会社はインターネットが繋がっていないのですが関係はないですよね?

関連するQ&A