【ASP.net】SqlDataSourceについて

このQ&Aのポイント
  • index.aspxページにSqlDataSource1とGridView1と検索ボタンをセットし、検索ボタンが押されると、SqlDataSource1にセットしているSQLにWHERE文を追記して、GridView1を再表示させたいのですが、どのようにすれば良いのでしょうか?
  • 現在のソースではSQL文がBindされてしまい、DBから値が取れません。
  • 解る方いらっしゃいましたらご教授お願いします。
回答を見る
  • ベストアンサー

【ASP.net】SqlDataSourceについて

【ASP.net】SqlDataSourceについて index.aspxページにSqlDataSource1とGridView1と検索ボタンをセットし、 検索ボタンが押されると、SqlDataSource1にセットしているSQLにWHERE文を 追記して、GridView1を再表示させたいのですが、どのようにすれば良いのでしょうか? 現在のソースです・・・。 Dim Str As String = SqlDataSource1.SelectCommand Dim StrSql As String = "" StrSql = " WHERE lbl = ららら " Str = Str & StrSql SqlDataSource1.SelectCommand = Str GridView1.DataSource = SqlDataSource1.SelectCommand GridView1.DataBind() この状態だと、SQL文がBindされてしまい、DBから値がとれません。 解る方いらっしゃいましたらご教授お願いします。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

>GridView1.DataSource = SqlDataSource1.SelectCommand これが問題 通常、静的にデータソースは設定されているので必要ありません。 設計時に、GridViewのデータソースは定義してあると思います。 もし、動的にやるなら、コントロール本体を設定する処です。 GridView1.DataSource = SqlDataSource1

関連するQ&A

  • SQLDataSourceのSQL文を変えて・・・

    ASP.Net にて日々壁が立ち上がっております。 GridView のデータソースであるSQLDataSourceのSQL文を変更し、尚且つページング、ソーティングも行いたいと思うのですが、なかなかうまく行きません。 Dim SQL As String 条件が複雑なので、SQL には自作したSQL文が入っております。 Me.SqlDataSource.SelectCommand = SQL Me.SqlDataSource.DataBind() このように記述するとGridViewのデータはSQL文に指定した通りに表示されるのですが、ページング、ソーティングを行うと、元々SqlDataSourceに指定してあるSQL文のモノが適応されて表示画面も元データの適応になってしまいます。 何かのサイトでこういう場合は DataSourceID をどうにかすると、ページング、ソーティングともに指定したSQL文のデータソース上で行われるみたいなことが書かれていたのですが、どう記述してよいかわかりません。 例えば・・・ Me.GridView.DataSourceID = "" Me.GridView1.DataBind() Me.GridView1.DataSourceID = Me.SqlDataSource.ID Me.GridView1.DataBind() こんな記述をしてみても、ページング、ソーティングはうまく動作しません。 動的なSQL文をGridViewに適応でき、ソーティング、ページングも適応させるにはどうしたらよいでしょうか? GridView にそういう事が簡単にできれば非常に使い勝手が良いのですが、 初心者的な考えなのかもしれませんが、何卒ご教授いただければと存じます。 よろしくお願い申し上げます。

  • SqlDataSource SelectCommand の書き方

    はじめまして。 現在aspx側でDBから読み込んだデータをGridViewに表示するプログラムを作っています。 環境 SQL Server 2005 Express Edition Visual Studio 2005 ASP.NET(VB) 初期表示として前の画面で選ばれた種別によってSQLが変わるので .aspxで <% dim s as string = "SELECT * FROM 台帳 " select case session("kind") case "A" s &= "WHERE 種別 LIKE '商品A%' " case "B" s &= "WHERE 種別 LIKE '商品B%'" case else ' 全種別を取得 end select hyo_1.SelectCommand = s & "ORDER BY 種別" %> <asp:SqlDataSource ID="hyo_01" runat="server" ConnectionString="<%$ ConnectionStrings:ConStr %>" /> と記述してみたのですが、結果は、何も表示されませんでした。 (順序を逆にしてみてもダメでした) この場合、<asp:SqlDataSource ~ /> で SelectCommand はクリアされてしまうのでしょうか? <asp:SqlDataSource ~ の中で SelectCommand="SELECT ~ " としたときに変数に入れたWHERE句を途中に埋め込むことがどうやってもできなかったので苦し紛れにやってみたのですが、、、 変数 whr="'商品A%'"として <asp:SqlDataSource ~ の中で SelectCommand="SELECT * FROM 台帳 WHERE 種別 LIKE <% = whr %> ORDER BY 種別" /> とするとエラーになってしまうし、いろいろ検索してみたのですが解決できませんでした。 SelectCommand の内容を場合によって変更するにはどのようにしたらよいのでしょうか? よろしくお願いいたします。

  • 【ASP.NET】DataSetをSqlDataSourceに組み込めますか?

    ASP.NET Visual Studio 2005で開発を行っています。 GridViewのページングの機能を使用するには、「SqlDataSource」や「ObjectDataSource」を使用しないと有効にならないと思いますが、データベースがDataSetになっています。 この状態から、GridViewにデータをバインドし、ページングを有効にさせるには、どうしたらよいでしょうか?? SqlDataSourceにDataSetを持っていくという方法が調べても、分かりませんでした。 以下が使用しているソースです。 これですと、ページングが有効にならず、エラーになる状態です。 ============================================= Dim dSet As Data.DataSet = New Data.DataSet("データ") Dim dTbl As Data.DataTable Dim dRow As Data.DataRow dTbl = dSet.Tables.Add("データ") dTbl.Columns.Add("aaa", Type.GetType("System.String")) dRow = dTbl.NewRow() dRow("aaa") = "bbb" dTbl.Rows.Add(dRow) Me.GridView1.DataSource = dTbl Me.GridView1.DataBind() ====================================== どうぞ、宜しくお願いします。

  • SqlDataSourceについて

    現在Visual Web Developer 2008で開発を行っています。 そこで質問なのですが、DBよりSqlDataSourceを通してテーブルデータを読み込み、GridViewにて表示させています。 しかし、そのテーブルを結合しなくてはならなくなりました。この場合SqlDataSourceには複数のテーブルを選択することは出来ないのでしょうか? また出来ない場合はカスタムにしてSELECTタブにjoin等で結合したSQL文を書くことになるのでしょうか?それともコード上に記載するのでしょうか? よろしくお願いいたします。

  • ASP.Net ObjectDataSource!

    お世話になります。 現在Access で作成されているアプリケーションをASP.Netに移植する為に日々精進しております。 GridView のデータソースを自由な感じでWhere条件にしたい事から、SQLDataSource から ObjectDataSource に切り替えた方が良いとのご指摘をうけ、現在作業を行っているのですが、問題が発生いたしました。 SQLDataSource ではSelectCommand に自作したSQL文を設定し、バインドすればGridView に反映できたのですが、 ObjectDataSource にはこのようなプロパティがないのですが、どのように設定すればよいのでしょうか? SQLDataSourceのように簡単には設定できず、特殊なやり方じゃないとダメなのでしょうか? なにぶんAsp.Netは初心者なので、何卒お願い申し上げます。

  • SQL文の作成について

    前の質問が解決してないのに、すいません。 SQL文を作成して、関数に投げると配列で 実行結果が返ってくるらしいのですが。 SQL文作成時に変数をWHERE節に組み込む 記述の仕方が自信ないです。以下のような感じです。 Dim srtSql As String Dim Key_Id As String Call Key_Get(Key_Id)  ’キーを取得 strSql = strSql & ”Select Tb*” strSql = srtSql & ” From Tb ” strSql = strSql & ”Where ” srtSql = strSql & ”Tb_Key_Id = ’” strSql = strSql & Key_id & ”’” のように(Accessだとこんな感じ【キーはSring】)ダブルクォーテーションの外に書いてよいのでしょうか?

  • GridView1の選択の指定とダミーデータの追加について

    GridView1とTwxtBox1を用意し GridView1に選択ボタンをつけ押すと、TextBox1にその行の1行目を表示するようにしたいのですが ★に何を入れたら、選択行を指定することができるのでしょうか?教えてください。 Protected Sub GridView1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) TextBox1.Text = GridView1.Rows.Item(★).Cells(1).Text End Sub Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Dim conStr As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString Dim strSQL As String strSQL = "SELECT 1CELL FROM tableA" Using con As New SqlConnection(conStr) Using cmd As NEw SqlCommand(strSQL, con) Dim dr As SqlDataReader con.Open() dr = cmd.ExecuteReader(Data.CommandBehavior.CloseConnection) GridView1.DataSource = dr GridView1.DataBind() dr.Close() End Using End Using End Sub また、GridView1に出ているデータに選択するデータがない場合の為に データーベースにはなくても【-】というデータを常に表示できるようにしたいのですが どのようにしたらいいのでしょうか? 【tableAの1CELL】 AAAAA BBBBB CCCCC DDDDD - ←データベースにはこのデータはないけれどGridView1には常に表示し、これを選択するとTextBox1に【-】が入るようにしたいのですが よろしくお願いします。

  • AccessSQL COUNT文で該当レコード抽出したい

    初心者です。 Access2000であるテーブルの条件に一致した レコード件数を抽出するSQLを作成しました。 条件に該当しない場合も1件で件数が戻ってきてしまいます。 AccessクエリでSQLを貼り付けて 検証した場合はちゃんと0件になるのですが VBAのコードではうまく件数が抽出されません。 簡単なことだったらごめんなさい。 いろいろなサイトで探した末、 どうしても解決できないので ご教授よろしくお願いします。 Dim strSQL As String Dim db As DAO.Database Dim rs As DAO.Recordset  Dim IntCount As integer 'SQL文を生成 strSQL = "SELECT COUNT(*) AS 件数 FROM テーブル名 " strSQL = strSQL & "WHERE テーブル名.コード = '" strSQL = strSQL & Forms![フォーム名]![txtコード] strSQL = strSQL & "' AND Left([テーブル名]![区分],1) = '" strSQL = strSQL & Forms![フォーム名]![cnb種類].Column(0) strSQL = strSQL & "' AND テーブル名.名称 = '" strSQL = strSQL & Forms![フォーム名]![txt名称] strSQL = strSQL & "';" Set db = CurrentDb Set rs = db.OpenRecordset(strSQL, dbOpenDynaset) IntCount =  rs.RecordCount rs.Close Set db = Nothing Set rs = Nothing

  • VB6でのSQL実行について

    VB6でのSQL実行について VB6でのSQL実行について困っています。 SQL文を作成し、ダイナセットで実行している最中にも 再度別のSQL文をダイナセットで実行することは可能なのでしょうか? 言語はVB6.0、DBはOracle9iを使用しています。 イメージ的にはこんな使い方をしたいです。 dim lngRecordRow1 as long 'レコード数1 dim lngRecordRow2 as long 'レコード数2 dim OraDynaset1 As OraDynaset dim OraDynaset2 As OraDynaset dim strSQL as string 'SQL文 dim lngCnt1 as long 'ループカウンタ1 dim lngCnt2 as long 'ループカウンタ2 strSQL= ---SQL文作成1回目--- Set OraDynaset1 = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY) 'SQL文実行1回目 lngRecordRow1 = OraDynaset1.RecordCount for lngCnt1 = 1 to lngRecordRow1 '--- 処理 --- strSQL= ---SQL文作成2回目--- Set OraDynaset2 = OraDatabase.CreateDynaset(strSQL, ORADYN_READONLY) 'SQL文実行2回目 lngRecordRow2 = OraDynaset2.RecordCount for lngCnt2 = 1 to lngRecordRow2 '--- 処理 --- next lngCnt2 next lngCnt1 1回目で取得したSQL実行結果を行単位でループをまわしつつ、1回目で取得したレコードの結果を条件に使用して別のSQL文を作成し、ループをまわしている最中に実行したいです。 その際、2回目のSQLの結果が2レコード以上の場合、さらにループをまわして条件判別をしたいです。 かなり困っています。回答待ってます。

  • MSFlexGridでデータの追加の方法は?

    VB6.0 WINXP DB:Oracle10g  よろしくお願いします。 SELECT文でデータベースからデータを取ってきてMSFlexGridにデータを送ったのですが、そのデータに更に追加したいと思います。 ' ADOのオブジェクト変数を宣言する Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim STRSQL As String 'Oracleとの接続 cn.Open "Provider=MSDAORA;" & _ "Data Source=NT;", "scott", "tiger" ' SQLステートメントを指定してレコードセットを作成する re.Open STRSQL = "select * from TOKUI WHERE A01 = 100" rs.CursorLocation = adUseClient rs.Open STRSQL, cn, adOpenDynamic, adLockBatchOptimistic 'グリッドに送る Set MSFlexGrid1.DataSource = rs 'ここからのSELECT文を追加したいと思います。 STRSQL = "SELECT TOKUI FROM WHERE A01 = 200" Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient rs.Open STRSQL, cn, adOpenDynamic, adLockBatchOptimistic よろしくお願いします。

専門家に質問してみよう