• ベストアンサー

データソースの非活性化について

Visual Web Developer を初めて使うのですが、どうも使い勝手が判らず困っています。 データベースの値をGridViewに表示するために、sqlDataSourceにSQLを書いて表示するまではわかったのですが、初期画面で、sqlDataSourceを非活性化(定義してあるデータのアクセスを止める)することはできないのでしょうか? AccessだとActivateというようなプロパティがあって、ボタンを押すなどのタイミングで活性化、非活性化をすることができたような記憶があるのですが、Visual Web Developer ではこのようなプロパティ、メソッドはあるのでしょうか? 初歩的な質問だと思いますが、ネットを調べても判らなかったので教えて頂ければ幸いです。

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

  • ベストアンサー
  • tochansa
  • ベストアンサー率76% (23/30)
回答No.1

SqlDataSourceはあんまり使ったことがないのですが、プロパティをチラ見した感じ、仰るようなものは無いのかなーというような印象を受けました。 なので、一般的な方法かどうかはわかりませんが下記のようなことを考えてみました。 初期状態でSELECTするSQLを空白の状態にしておいて、ボタンを押したタイミングでバインドする、みたいな感じです。 Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.SqlDataSource1.SelectCommand = "SELECT ""HOGE"", ""HUGA"", ""PIYO"" FROM ""HOGEHOHGE""" Me.SqlDataSource1.DataBind() End Sub <asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1"></asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" SelectCommand=''></asp:SqlDataSource> <asp:Button ID="Button1" runat="server" Text="Button" />

hatsuzo
質問者

お礼

返事が送れて失礼しました。 ソースまで書いていただきまして有難うございます。 確かにエラーが出てもトラップできればうまくいきそうな気がします。

その他の回答 (1)

  • aspnet
  • ベストアンサー率79% (72/91)
回答No.2

.NETのデータアクセス(ADO.NET)は、これまでの進化の歴史を反映して、さまざまな方法があります。 その中で、GridView+sqlDataSourceというのは、「最も簡単に、ノンプログラムで」DBの読込・削除・更新を実現する手段になっています。 そのため、非常に固定的なデータアクセスを行いますので、GridViewの表示時にDBに接続して取得、自動バインディングでデータが表示されるスキームになっています。 Gridview/sqlDataSourceで自動発生するイベントをフェッチし、イベントハンドラで細かく制御していく必要があります。 であれば最初から、TableAdapterやDataAdapterを使って、データ取得して手動バインドするアクセス法や、よりプリミティブなsqlDataReaderを使う方法など、プログラム的に細かい制御ができる方法を使用された方が良いと思われるのですが。。 外していたらすいません。

参考URL:
http://www.amazon.co.jp/gp/reader/4891005491/ref=sib_dp_pt#reader-link
hatsuzo
質問者

お礼

有難うございました。 返事が送れて失礼しました。 仰るとおりの用途で作られているコンポーネントにそこまで期待するには無理そうですね。

関連するQ&A

専門家に質問してみよう