- ベストアンサー
ASP.NETのWebフォーム内で複数のテーブルを使用する方法
- ASP.NETのWebフォーム内で複数のテーブルを使用する方法について教えてください。
- 検索フォームで押されたボタンによって検索キーを変える処理分岐の方法と、テーブルを追加表示する方法について教えてください。
- ASP.NETのWebフォームで複数のテーブルを使い、検索フォームによって表示するテーブルを切り替える方法について詳しく教えてください。
- みんなの回答 (51)
- 専門家の回答
質問者が選んだベストアンサー
検索キーや検索方法を検索ページ側でプロパティまたはコントロールで参照できるようにします 言語は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で判断するとかだと思います 具体的に どのテーブルをどんな具合で表示したいのかを投稿してみましょう
その他の回答 (50)
- redfox63
- ベストアンサー率71% (1325/1856)
一度何が必要でどうコーディングすべきかなどの検討をやってみる必要があるでしょうね
お礼
おっしゃる通りです。 ありがとございました☆
- redfox63
- ベストアンサー率71% (1325/1856)
Label.Textに何を代入したのでしょう? 前頁からの指から構築したSQLなのでしょうか … SQLなら『 SELECT ほにゃらら FROM ほげほげ WHERE 何とか ORDER BY ぺけぺけ』といった文字列になるともいますが
お礼
お返事遅れ申し訳ございません。 下位部分にLabel.Textがありましたのでそれが原因でした。。。 その部分を削除して実行すると次は画面が真っ白になってしまいました。 redfox63さまの環境では期待通りの動作がなされていたとのお話も御座いましたので1度最初から投稿内容を確認しながら作成し直そうと思います。自分で考えながら作成してみますので一旦、投稿を締め切ろうと思います。 どうしても期待通りの動作がなければ再度、投稿させて頂きますのでご覧になる事がありましたらご教示下さいませ。 今回は最初から長期間に渡りご指導いただきました事非常に感謝いたしております。本当にありがとうございました。 ASP.NETに関する投稿をした際は必ずredfox63さまに回答頂いていました。今回のみならず感謝しております。 これからもどうかよろしくお願い申し上げます。
- redfox63
- ベストアンサー率71% (1325/1856)
よかったですね ・・・ ん~ 原因の究明が出来ていないのが気にかかりますけど そうですね#29辺りまで戻れば良いでしょう PreviousPage.myProcOne やPrevoiusPage.myKeyOneを取得して SQLを構築実行でしょう SQLを組み立てる際に ソート用の ORDER BY句を最後にしましょう
補足
ありがとうございます☆ ♯12のコードにて実行しました。 すると画面の上部に Label Label Label とだけ表示されました。 レコードがでないので間違いになるのですよね??
- redfox63
- ベストアンサー率71% (1325/1856)
919156の情報は チーム開発用のサーバーが導入されている場合の更新手続きだと思います 参考URLに Term Foundation ServerのホームページURLを貼っておきます
補足
redfox63さま ありがとうございます☆ VS2005を1度アンインストールして再インストール後に919156の情報を無視してSP1をインストールして見た所、SP1を当てる事ができました! そこで早速、SP1を当てた状態でF5実行した所、「アプリケーション・・・」のエラーが出なくなりました♪ 一体、何が原因だったのかはわかりませんが・・・ 諦めずご教示頂いた事感謝致しております。 ありがとうございます!! 本題は♯29くらいまで戻らせて頂けばよろしいでしょうか? (かなり前になりますね・・・すみません。) 宜しくお願い申し上げます。
- redfox63
- ベストアンサー率71% (1325/1856)
ん~ どうやっても 同じ状況を作れませんねぇ VirtualPCでネットワーク接続をしない状態にしても別段開発は出来てますし クリーンインストールしても状況が変わらないのであれば ちょっとお手上げですね VS2005のサービスパックを適用してみてはいかがでしょう # 改善されるかどうか怪しいですが … 何でかなぁ?
お礼
あ、すみません。 最新版の有無を確認でUpdataしたらSP1になったと思います。 SP1って何か使い方が少し違う気がするのですが・・・
補足
ありがとうございます! とりあえずVS2005 SP1を当ててみたいと思い、サポート技術情報 919156 の更新プログラムをインストールした際にメッセージボックスが出たのですがこれは何かバージョンの違いとかあるのでしょうか? メッセージボックス内容 Windowインストーラサービスでアップグレード修正プログラムをインストールできません。アップグレードするプログラムがないか、またはアップグレード修正プログラムでアップグレードするプログラムのバージョンが違う可能性があります。アップグレードするプログラムがこのコンピューターにあり、アップグレード修正プログラムが正しいかどうかを確認してください。 と表示されました。
- redfox63
- ベストアンサー率71% (1325/1856)
もしかして NIC(ネットワークインターフェース)にケーブルもつながない状態で実行していたのでしょうか? 社内のイントラネットにつながった状態を考えていたのですが ・・・
補足
ありがとうございます! 担当に確認してみました。 >もしかして NIC(ネットワークインターフェース)にケーブルもつながない状態で実行していたのでしょうか? 繋がった状態との事です。 >社内のイントラネットにつながった状態を考えていたのですが ・・・ 社内のイントラネットに繋がった状態との事です。 お答えになっていますでしょうか? よろしくお願い致します。
- redfox63
- ベストアンサー率71% (1325/1856)
IISマネージャで見た際に 左ペインで インターネット インフォメーション サービス コンピュータ名(ローカルコンピュータ) Webサイト 既定のWebサイト この下にいろいろなフォルダ といった構成ですよね でこの下にいろいろなフォルダの階層に aspnet があって Web があって ここにaspxファイルが置いてある といった構成ですか? Webのアイコンですが フォルダーのアイコンですか それとも段ボール箱の開いたようなアイコンでしょうか 前者なら Webアプリケーションになっていません 後者なら Webアプリケーションになっています フォルダーアイコンの右下に地球のような物がついているのは仮想ディレクトリですからこれも Webアプリケーションではありません ここがこのアイコンでしょう? NTFSのアクセス権は エクスプローラでその見たいフォルダーの親まで開きます 見たいフォルダーを選択して ファイル > プロパティ > セキュリティタブ で表示されます
お礼
redfox63さま 1度端末をクリーンな状態試してみました。 やはりダメだったのですが無理矢理外向けのインターネットが繋がる環境を作り実験してみた所、「アプリケーション・・・」のエラーが出ませんでした。これが原因の様です。。。 実験という名目でネット接続をしたのですが会社の環境上はネットが繋がらない状態に戻さなければいけません。。。 ローカルでエラーが出る以上、Webサーバーにaspxファイルを配置して作っていくしか方法はないと思われます。 サイトの発行をしなくても可能なのでしょうか?? よろしくお願いいたします。
補足
おはようございます☆ Webサイト 既定のWebサイト この下の階層に「aspnet」があって「Web」があって ここにaspxファイルが置いてある構成なのでおっしゃる通りです! Webのアイコンですが 段ボール箱の開いたようなアイコンになっております。 NTFSのアクセス権は問題ないようです。。。 少しだけお時間頂けますでしょうか? 端末をリカバリして1度完全にクリーンな状態にしてやり直してみます☆
- redfox63
- ベストアンサー率71% (1325/1856)
作成したサイトのパスは何処でしょう? そのフォルダーのNTFSのアクセス許可はどのようになっていますか また IISマネージャでそのサイトのアクセス許可がどのようになっているのでしょう wwwrootの下に展開しているのでしょうか ・・・ MSDN Subscriptionに加盟しています? しているのであれば インシデントを消費して質問してみると言うのも手ですよ …
補足
>作成したサイトのパスは何処でしょう? c:\inetpub\wwwroot\aspnet\Web\aspxファイルとなっています。 >そのフォルダーのNTFSのアクセス許可はどのようになっていますか NTFSのアクセス許可は見方が分かりませんでした。 >また IISマネージャでそのサイトのアクセス許可がどのようになっているのでしょう フル権限とのメッセージボックスが出ます。 >MSDN Subscriptionに加盟しています? 加盟していないです。。。 またlocalhostでaspxファイルを実行すると以下のエラーが出ました。 やはりあのエラーと関係あると思われます。 '/aspnet' アプリケーションでサーバー エラーが発生しました。 -------------------------------------------------------------------------------- 構成にエラーがあります。 説明: この要求を処理するために必要な構成ファイルの処理中にエラーが発生しました。以下のエラーの詳細を確認し、構成ファイルに変更を加えてください。 パーサー エラー メッセージ: アプリケーション レベルを超えて allowDefinition='MachineToApplication' として登録されているセクションを使うことはできません。このエラーは、仮想ディレクトリが IIS でアプリケーションとして構成されなかった場合に発生します。 ソース エラー: 行 50: を有効にします。 行 51: --> 行 52: <authentication mode="Windows"/> 行 53: <!-- 行 54: <customErrors> セクションは、要求の実行中にハンドル ソース ファイル: c:\inetpub\wwwroot\aspnet\Web\web.config 行: 52 -------------------------------------------------------------------------------- バージョン情報: Microsoft .NET Framework バージョン:2.0.50727.42; ASP.NET バージョン:2.0.50727.210 よろしくお願い致します。
- redfox63
- ベストアンサー率71% (1325/1856)
XPのコントロールパネルの『アプリケーションの追加と削除』で 『Windowsコンポーネントの追加と削除』ボタンをクリック Windowsコンポーネントウィザードで『IIS』を選択 詳細ボタンをクリック 『FrontPage2000 ServerExtentions』のチェックつけてOK 次へボタンで ウィザードを完了してみてください その後 #42 の手順を実行してみましょう
補足
ありがとうございます。 ServerExtentionsの設定できました。 IIS再起動にて実行しましたが ・アプリケーションレベルを超えて allowDefinition='MachineToApplication'として登録されているセクションを使うことはできません。このエラーは、仮想ディレクトリがIISでアプリケーションとして構成されなかった場合に発生します。行 26 のエラーは変わりませんでした。。。
- redfox63
- ベストアンサー率71% (1325/1856)
仮想ディレクトリに対する FrontPageExtentionの設定不足なのかもしれません IISマネージャにて作成した仮想ディレクトリを右クリックして すべてのタスク > ServerExtentionsの設定 でウィザードに従ってみてください プロパティを取得できているのであれば Text Button などが default.aspxに作成したテキストボックスの内容とButtonの文字になるはずですので ・・・
補足
何度も申し訳ありません。 >すべてのタスク > ServerExtentionsの設定 すべてのタスク→アクセス許可ウィザードしかないのですがこれで宜しいのでしょうか? default.aspxに作成したテキストボックスの内容は表示されました。 ただ、なんでかLabelも一緒に出てきますが(^ ^;) よろしくお願い致します。
お礼
すみません。。。 プロパティを遷移元ページに設定しない場合はサンプルでいう→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の一覧を表示させたいです。 どうか宜しくお願い致します。
補足
redfox63さん ありがとうございます! ちょっと難しい感じがしてしまいました。。。 月曜日がんばって試してみます。 またご質問させて頂くと思いますが宜しくお願い致します。