電子書籍の厳選無料作品が豊富!

Visual Studio 2008で作業しています。
DetailsViewコントロールを使用してAcessDBのレコードの内容を表示しています。この画面は、他の画面で、レコードの一覧を表示し、その一覧で、あるレコードが選択されたときに呼び出されます。この画面で、そのレコードの詳細を表示したいと考えています。レコードには主キーがIDという名称で登録されています。この画面にきたとき、(他の画面で選択した)IDの値を取り出すところまでは、出来たのですが、このIDを指定して、SQL文を発行し、このレコードを取得する方法がわかりません。(現在のSQLステートメントは、select ID,項目1,項目2 ... from table_A のようになっており、 where 句をつけていません。取得したIDをテキストボックスにセットし、where (ID = TextBox1.[Text])のようにしたのですが、実行時に異常終了していまいました。)
DetaisViewで、指定されたレコードを表示する方法をご存じのかたがおりましたら教えてください。

A 回答 (2件)

SqlCommand.CommandTextプロパティにセレクト文を設定すればよいです。


もちろん、SqlDataSource.SelectCommandプロパティにセレクト文を設定してもよいです。
    • good
    • 0
この回答へのお礼

ありがとうございました。やってみます。

お礼日時:2009/08/31 18:17

現状画面遷移をどのようにしているかで違う方法になるかと思われます。


1.一覧の画面から同じ画面にポストバックして、そのあと選択していたアイテムによりDetailsViewにRedirectなりTranferなりする場合、TextBoxは一覧の画面にあるオブジェクトなので、DetailsViewのページからはそのままではアクセスできず、エラーで終了になっている可能性がある。
もしこれに当てはまるのであれば、SessionオブジェクトにIDの値を代入しておきDetailsViewの画面でそのSessionの値を使用してSelectする。

2.一覧からはリンクでどのレコードか選択してDetailsViewにする場合は、リンクを作成する時に一緒にIDも抜き出しておき、リクエストパラメータとして、
http://.......aspx?ID=13
という形で埋め込んでおく方法があるかと思います。

この回答への補足

回答ありがとうございました。
ネットで検索すると、
どうも、where句で指定するのではなく
データ取得する前に
SqlDataSource.SelectCommand を使用するようなことが
ことが、かいてありました。どうもこれが私が求めている
機能のような気がします。

補足日時:2009/08/31 17:02
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
状況としては、2.に近いかと思います。
Webに関して初心者なので、ページ間のデータの受け渡しが、不慣れなので、以下の方法を採っています。
一覧画面でIDを抜き出して、その画面のテキストボックス2にその値を
セットします。(テキストボックス2は非表示)そして、一覧画面から詳細画面にポストバックしてます。詳細画面で、元の画面のテキストボックス2からIDを抜き出すことまでは、成功しています。そして、その値を、詳細画面のテキストボックス1に設定し、正しく表示できました。しかしながら、そのあと、そのIDをキーにしてDetailsViewの画面のキー(ID)を設定することが出来なくて困っています。
現在C#で、コーディングしてますが、sqlステートメントは、DetailsViewのデータソースの選択から、DBを選択したときに表示されるところへSQLのステートメントを記述しています。
そこで、select ID,項目1,項目2 ... from table_A where (ID = TextBox1.[Text])のように指定しています。
sqlステートメントをC#で記述するとき、ソースのどの場所へ記述するのかが、判らないので、いまのようにしています。
もし、明示的にC#から記述する方法がわかれば、その方法を採用したいとも思っております。
従って、再度質問をまとめますと、
1.詳細画面でIDの値を取得は出来たのですが、そのIDを指定したSQL文を指定する方法が判らない。
(where ID="取得した値"の記述をどこに書けばよいかが判らない。)
2.現在、SQL文は、データソースの指定のところで、記述していますが、もしC#のソース上で記述する方法を、ご存じでしたら、その方法も教えて下さい。(select ID,項目1,項目2,... where ID='取得した値' をどの関数に記述すればよいかが判りません)

もし、私の説明で、不明点があれば更に補足致しますので、宜しくお願いします。

お礼日時:2009/08/31 14:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!