ASP.Net ObjectDataSourceについての問題

このQ&Aのポイント
  • ASP.NetでAccessから移植する際に問題が発生しました。
  • SQLDataSourceとObjectDataSourceの違いや設定方法について教えてください。
  • 初心者なので、助けが必要です。
回答を見る
  • ベストアンサー

ASP.Net ObjectDataSource!

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

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

  • ベストアンサー
  • shockatz
  • ベストアンサー率80% (153/191)
回答No.1

ObjectDataSourceは、SQLDataSourceと違って、別途作成しておいたデータアクセス手段を、クラスとメソッド名で指定するものです。 (SelectCommandで直接、SQLを記述するのではなく、SelectMethodで取得メソッドを指定する) 最近あまり使ってないのですが、たしか、Object DataSourceは、上記の情報(プロパティ)からアクセス時、自動的にデータアクセスクラスをインスタンス化して、データの授受を行ったと思います。 DAO側は一般的に、TableAdapterを使って、「強い型つき」のDataTableを返すものを用意することが多いでしょう。 他のデータアクセス手段も使えますが、同じ時期にセットで提供されたのがTableAdapterなので、相性がいいみたいです。 Visual Studioでプロジェクトにデータセットを追加し、中にTableAdapterを追加して、GetXXXな取得メソッドを定義したら、デザイナが勝手にコードを作ってくれますし、自分でデータアクセスクラスに任意の取得メソッドも追加できるので、あとはそのクラス名とメソッド名を叩けばいいだけです。 って、TableAdapter使ってます? 大昔みたいに裸でSQL叩いてる? とにかく、赤間本を読みましょう!

kyokotan12
質問者

お礼

shockatzさん 大変お世話になっております。 ObjectDataSourceを作成し、基本SQL文を入力し、作成を続けると自動的にTableAdapterが作成されました。このTableAdapterのプロパティにSQLを指定してバインドすると機能するのかと思っていたのですが、クラスとメソッド名で指定するやり方なのですね!いろいろとくぐってみても、これだと思う例がなかったので、質問させていただきました。 ご指摘の本、今購入予約しました。参考書は2冊ほど購入したのですが、ObjectDataSourceに関する詳しい記述例などがないので、この本の到着が楽しみでなりません。この本を読ませていただき、改めて質問がありましたら、新しい形でまた質問させて下さいませ。 ご指南ありがとうございます。

関連するQ&A

  • 【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から値がとれません。 解る方いらっしゃいましたらご教授お願いします。

  • 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 GridView につきまして

    ASP.NET GridView につきまして質問があります。 よろしくお願いいたします。 SQL Server にあるデータを使用して、GridView を作成しております。 あるBit型フィールドがあるのですが、NULLの場合は 無、1の場合には 有 と GridView内に表示させたいのですが、GridViewの項目はバインドされているフィールドしか表示させることができないのでしょうか? 非連結の項目を追加して どこかのプロパティに =IIf([CheckChoku]=True,"有","無") を記述すれば、表示できるような方法を探しています。 すみません ASP.Net は始めたばかりなので、VB や Access のような操作が応用できればなと思っております。もしくは SQL のデータソースを作成するときに上記を埋め込んでソースにしないと実現できないものでしょうか? ご教授いただければ 大変助かります。 よろしくお願いいたします。

  • 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 にそういう事が簡単にできれば非常に使い勝手が良いのですが、 初心者的な考えなのかもしれませんが、何卒ご教授いただければと存じます。 よろしくお願い申し上げます。

  • ASP.Net ObjectDataSource

    現在、過去にAccess で作成しましたシステムをASP.Net にて作り変えております。 GridView のデータソースとして 動的なWhere文を必要としていることから 以前、SQLDataSourceよりもObjectDataSourceに変更したほうが良いとのアドバイスをいただき、赤間本と呼ばれる構築技法の書籍も購入しまして日夜勉強しているASP.Net初心者の者であります。 こちらの本の第10章からが動的Where文を紹介している部分だと思うのですが、なかなか難解で頭に入ってきません。 【こちらでやった事】 DataSetを作成し、基本SQLを作り、TableAdapter を作成しました。 【まずわからない事】 例えば Where句が全て埋まっている場合のSQLが下記のものだとします。 SELECT * FROM test WHRE A = @para1 AND B = @para2 AND C = @para3 動的SQL文を作成したいので SELECT * FROM test WHRE A = @para1 だったり SELECT * FROM test WHRE B = @para2 だったり SELECT * FROM test WHRE C = @para3 だったり SELECT * FROM test WHRE A = @para1 AND B = @para2 だったり SELECT * FROM test WHRE B = @para2 AND C = @para3 だったり SELECT * FROM test WHRE A = @para1 AND C = @para3 だったり SELECT * FROM test WHRE A = @para1 AND B = @para2 AND C = @para3 だったりと 全部で7通りあるわけです。 書籍には、クエリを追加するようにと記述されているのですが、 これら7通りを全て記述して クエリの条件にあったモノを選択し、実行させ GridView にバインドさせるのでしょうか? もしそうだとすると パラメーターが仮に10個あったとしたら すごい数のクエリを追加していくことになるのかなと思い、 まずは、どういう概念で登録していくのかをお教えいただければと存じます。 今まで、動的SQL の場合は、パラメーターが空白、NULLの場合にはSQL文に含めない形で SQL文を作成し、レコードソースにしていたのでTableAdapter を作成して どのような形で動的クエリを実行させるのかがまったくつかめていない状況でございます。 なんとかこの壁を突破し前へ進めればと思っております。 よろしくお願い申し上げます。

  • VisualStudio2005でのGridView 集計

    VisualStudio2005でGridViewを使って集計表を出そうと思い下記のSQL文を作成しましたが明細で出てしまいます。 どこが間違っているのでしょうか? ---------------------------------------------------------------- </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:meldandyConnectionString %>" SelectCommand="SELECT DISTINCT [kamoku_code], [kamoku_name], [s_code], [s_name], [kingaku] FROM [a_keihi_dt] WHERE ([kamoku_code] > @kamoku_code2) GROUP BY [s_code], [kamoku_code], [kamoku_name], [s_name], [kingaku] ORDER BY [s_code], [kamoku_code]">

  • ASPとavascript

    はじめましてこんにちわ。 ただいまasp.net(vb)で開発をしております。 gridviewにバインドしています。 そこに新たにtextbox,LBLをいれています。 textboxに値が入力されたらjavascript(クライアント側)にてバインドした値*textboxをLBLにjavascriptを使って表示したいのですが方法がわかりません。 どなたか教えていただけないでしょうか??

  • DropDownList に指定した値を表示したい

    <開発環境>asp.net A画面のgridviewで指定されたkeyの詳細情報をB画面のgridviewで表示しています。 B画面ではgridviewのTemplateFieldにDropDownListを作成しています。 DropDownListはSqlDataSourceをバインドさせているのですが、A画面でデータを選択し 修正ボタンを押下した時にB画面のDropDownListに初期表示する方法がわかりません。 どのようにすれば表示できるのでしょうか? ちなみにA画面でKBNNAMEが"愛知県"だとB画面で"愛知県"と表示したいです。 -------------------------------------------------------------------------------- <asp:GridView ID="grdList" CssClass="list" runat="server" AutoGenerateColumns="False" DataSourceID="sqldsList"> <Columns> <ItemTemplate> <asp:DropDownList CssClass="cnbstr" ID="cnbBB_KBN" runat="server" DataSourceID="sqldscnb1" DataTextField="KBNNAME" DataValueField="KBNORDER" AutoPostBack="True"></asp:DropDownList> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> -------------------------------------------------------------------------------- <asp:SqlDataSource ID="sqldscnb1" runat="server" ConnectionString="<%$ ConnectionStrings:InformationUseConnectionString %>" SelectCommand="SELECT KBNORDER, KBNNAME FROM table1 WHERE (NO = @NO) AND (ITEMNO = @ITEMNO) ORDER BY KBNORDER" DeleteCommandType="StoredProcedure"> <SelectParameters> <asp:SessionParameter Name="NO" SessionField="BBList_NO" Size="2" Type="String" /> <asp:Parameter DefaultValue="01" Name="ITEMNO" Size="2" Type="String" /> </SelectParameters> </asp:SqlDataSource>

  • <ASP>にTextBoxの値を設定する方法

    TextBoxに記述されたDB接続文字列を<ASP>内で設定しようと試みておりますが、失敗します。どのように記述を改めればよろしいでしょうか? ----------------- <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebForm1" %> <script runat="server"> protected void Page_Load(object sender, EventArgs e) { TextBox1.Text = Application["DB_CON_STRING"].ToString(); } </script> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>無題のページ</title> </head> <body> <form id="form1" runat="server"> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <div> </div> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="SqlDataSource1"> <Columns> <asp:BoundField DataField="ID" HeaderText="ID" InsertVisible="False" ReadOnly="True" SortExpression="ID" /> <asp:BoundField DataField="DATETIME" HeaderText="DATETIME" SortExpression="DATETIME" /> <asp:BoundField DataField="MESSAGE" HeaderText="MESSAGE" SortExpression="MESSAGE" /> </Columns> </asp:GridView> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="form1.TextBox1.Text"★ここがうまくいかない★ SelectCommand="SELECT * FROM TEST ORDER BY ID DESC"></asp:SqlDataSource> </form> </body> </html>

  • ASP.NET GridViewの表示

    お世話になります。 環境:Oracle10g、VisualStudio2005 ASP.NET(VB)、Winxp ASP.NETでのWEBサイト構築は初めてで、わからないことだらけ で試行錯誤しております。 GridViewでObjectDataSourceを使用し、データ表示をしたい のですが、ビジネスオブジェクトの選択で、リストボックス に選択項目が表示されません。リストボックスに選択項目と して表示される条件を教えて頂きたいです。 xsdファイルにDataTableとDataAdapterを作成しクエリを設定 するところまでやりました。 情報不足等あれば追記致しますので、宜しくご教授お願い致 します。