- - PR -
エイリアスを含むselect文のDataSetをGridViewにBindするとエラーになります。
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-07-13 10:34
初めてご質問させていただきます。どうぞよろしくお願いします。
環境は、WinXP Pro SP2,VS2005,C#,SQLServer2005 Ex です。 エイリアスを含むselect文のDataSetをGridViewに表示しようとすると、DataBind()で、「名前 ' Title' のフィールドまたはプロパティが選択されたデータ ソースに見つかりませんでした。」とエラーになります。 以下のソースの2行目のSQL文の様に「タイトル as Title」 とするとエラーします。 "select タイトル from DVDLIST"とエイリアスを使用しなければエラーせずGridViewは正しく表示されます。 デザインでSqlDataSourceにエイリアスを含むSQL文でもとGridViewに表示されるため、エイリアスselect文でも機能すると思うのですが.... 賢者の皆様、ご指摘、ご指導、お願い申し上げます。 DataSet vDs = new DataSet(); SqlDataAdapter vDataAdaAdapter = new SqlDataAdapter(”select タイトル as Title from DVDLIST”, "TEST"); vDataAdaAdapter.Fill(vDs); BoundField gvFieldTypeBound = new BoundField(); gvFieldTypeBound.HeaderText = "Title"; gvFieldTypeBound.DataField = "Title"; gvFieldTypeBound.SortExpression = "Title"; gvControlField = gvFieldTypeBound; GridView1.Columns.Add(gvControlField); GridView1.DataSource = vDataSet; GridView1.DataBind(); <--- ここで「名前 ' Title' のフィールドまたはプロパティが選択されたデータ ソースに見つかりませんでした。」とエラーが発生します。 | ||||
|
投稿日時: 2008-07-13 23:56
このvDataSetには何がセットされているのでしょうか? | ||||
|
投稿日時: 2008-07-14 06:18
すみません、コードが間違っていました。
DataSet vDataSet = new DataSet(); SqlDataAdapter vDataAdaAdapter = new SqlDataAdapter(”select タイトル as Title from DVDLIST”, "TEST"); vDataAdaAdapter.Fill(vDataSet); BoundField gvFieldTypeBound = new BoundField(); gvFieldTypeBound.HeaderText = "Title"; gvFieldTypeBound.DataField = "Title"; gvFieldTypeBound.SortExpression = "Title"; gvControlField = gvFieldTypeBound; GridView1.Columns.Add(gvControlField); GridView1.DataSource = vDataSet; GridView1.DataBind(); <--- ここで「名前 ' Title' のフィールドまたはプロパティが選択されたデータ ソースに見つかりませんでした。」とエラーが発生します。 | ||||
|
投稿日時: 2008-07-14 08:32
情報共有のためにリンクしておきます。
http://vsug.jp/tabid/63/forumid/-1/threadid/11246/scope/posts/Default.aspx http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=3608007&SiteID=7 # 面倒なのでこれら2つのサイトへの投稿はしていません マルチポストをした場合はそれぞれのサイトへその旨を書いておいてくださいね。 | ||||
|
投稿日時: 2008-07-14 21:06
まず、この質問について複数のサイトに投稿する際のご案内(マルチポスト)が漏れてていた事をお詫びいたします。
「マルチポスト」と言う用語さえ知らなかった初心者で作法を粗相してしまいました。 さて、本件の質問につきましてMSのフォーラムでSurferOnWww さんのご指摘で解決いたしました。 原因は、gvFieldTypeBound.DataField = " Title"; で、エイリアス名の先頭にスペースが入っていたと言う愚かなコードミスが原因でした。 ご返答いただきました方々、本当にありがとうございました。 |
1