- PR -

Select文を利用してDataGridにデータを表示したい

投稿者投稿内容
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-10-21 18:06
NAL-6295です。

見落としていました。

引用:

trapemiyaさんの書き込み (2005-10-21 18:01) より:
引用:

はなさんの書き込み (2005-10-21 16:32) より:
DataBind();


最初の投稿から引用しますが、最後のDataBind();っていうのはサブルーチンですか?
一般的には、
DataGrid1.DataSource = ds;
DataGrid1.DataBind();
になるのですが・・・。



そこが原因っぽいですね。
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2005-10-21 18:16
Control.DataBind() は配下のコントロールの連結も行うから、もし文脈が Page であればただちに問題になるということはないと思います。

おっと、見落としてた。
ただし、DataSource が設定されていないのだとすれば(私はたまに aspx から設定するので、コードにないからといって必ずしも設定されていないとは限らない)バインドはされませんね。

[ メッセージ編集済み 編集者: にしざき 編集日時 2005-10-21 18:18 ]
はな
常連さん
会議室デビュー日: 2005/10/21
投稿数: 20
投稿日時: 2005-10-21 18:27
みなさん、お返事ありがとうございます。

まず、ブレイクをかけて、DSの中を調べてみましたところ、全部表示できるときはデータが入っていて、SELECT文の問題の部分のところではデータが入っていませんでした。

DataBind();
ですが、見落としかもしれませんが、とある本にこれだけでいいようなことが書いてあったような気がしたので、これだけで使いましたが、NAL-6295さんがおっしゃるように、
DataGrid1.DataSource = ds;
DataGrid1.DataBind();
と同じ意味で使っています。
今書き換えました。
しかし、中身は空っぽでした。

にしざきさんがおっしゃる
「もし文脈が Page であればただちに問題になるということはない」
のPageとは何のことを指しますか?
理解できなくてすみません…

あと、DataSourceに設定するというのは、NAL-6295さんがおっしゃる

DataGrid1.DataSource = ds;

ということですか?

理解ができていなくてゴメンナサイ。。。
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-10-21 18:43
引用:

にしざきさんの書き込み (2005-10-21 18:16) より:

Control.DataBind() は配下のコントロールの連結も行うから、もし文脈が Page であればただちに問題になるということはないと思います。



ほんとだ。大昔に勉強したきりで使うことがなくて、すっかり忘れてました。すみません。m(_ _)m
DataBind()はページ上の全てのバインディングを有効にするんですね。
trapemiya
大ベテラン
会議室デビュー日: 2005/07/30
投稿数: 102
投稿日時: 2005-10-21 18:58
引用:

はなさんの書き込み (2005-10-21 18:27) より:

まず、ブレイクをかけて、DSの中を調べてみましたところ、全部表示できるときはデータが入っていて、SELECT文の問題の部分のところではデータが入っていませんでした。


dsとDSが出てきますが、この辺りで混乱されていませんか?

引用:

DataGrid1.DataSource = ds;
DataGrid1.DataBind();
と同じ意味で使っています。
今書き換えました。
しかし、中身は空っぽでした。


問題が2つあるような気がします。
1.dsとDSがごっちゃになっていませんか?データグリッドのデータソースにはどちらを指定しますか?
2.dsが空ということはうまく抽出できていないってことです。まずここをクリアしましょう。ひょっとしたら違うところを見ている可能性もあるかもしれません。

引用:

Pageとは何のことを指しますか?


Pageオブジェクトはデフォルトのオブジェクトです。
つまり、Page.DataBind()でも、単にDataBind()でも同じ意味になります。
NAL-6295
ぬし
会議室デビュー日: 2003/01/26
投稿数: 966
お住まい・勤務地: 東京
投稿日時: 2005-10-21 18:59
NAL-6295です。

ただ、
引用:

引用:
--------------------------------------------------------------------------------


にしざきさんの書き込み (2005-10-21 18:16) より:

Control.DataBind() は配下のコントロールの連結も行うから、もし文脈が Page であればただちに問題になるということはないと思います。

--------------------------------------------------------------------------------



ほんとだ。大昔に勉強したきりで使うことがなくて、すっかり忘れてました。すみません。m(_ _)m
DataBind()はページ上の全てのバインディングを有効にするんですね。



だと、データソースの設定は行われないので、
引用:

DataGrid1.DataSource = ds;




は必要ですね。
多分、ここでしょう。

えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2005-10-21 19:10
確認です。
因みにデザイン側のコードに、
コード:

<asp:Datagrid id="DgdList1" Runat="server" DataSource="<%# DS %>">


と、DataSourceの記述はありますか?
指定してあれば、
コード:

DataGrid1.DataSource = ds;


は、不要ですね。

[追記]
書いてから思った。。。ソースの全容が見えないから、不要ということではないのか...誤爆

[更なる追記]
プロパティビルダを使用しているのであれば、「列」の個所にて「実行時に自動的に列を作成する」としてみたらどうなるでしょう?
# 自分はプロパティビルダは使わない派なので、「試しに」やってみてください
# ...混乱

[ メッセージ編集済み 編集者: えんぞ@? 編集日時 2005-10-21 19:17 ]

[ メッセージ編集済み 編集者: えんぞ@? 編集日時 2005-10-21 19:55 ]
はな
常連さん
会議室デビュー日: 2005/10/21
投稿数: 20
投稿日時: 2005-10-24 10:42
はなです。
みなさん、お返事ありがとうございます。

大文字のDSは誤記でした。すみません。
そして、NAL-6295さんに言われたように、削除するポイントだったので、最初の頃に削除したので、影響は無いと思われます。
デザイン側のコードに
<asp:Datagrid id="DgdList1" Runat="server" DataSource="<%# DS %>">
はありました。
DataGrid1.DataSource = ds;
も私が書いたコードの中にあります。

そして、現在のコードは以下のとおりになっています。

---------------------------------------------------------------------

SqlConnection sqlcon = new SqlConnection();
sqlcon.ConnectionString = "connectionString(接続するためのストリング)";
SqlDataAdapter sqlda = new SqlDataAdapter ("SELECT * FROM tableName WHERE (a = 1) AND (b = 2) AND (c = 3) AND (d = 4)",sqlcon);

sqlda.Fill(ds);
DataGrid1.DataSource = userRegDS;
DataGrid1.DataBind();

---------------------------------------------------------------------

そして、dsの中はやはりありません。
アダプター、コネクションストリングの使い方など、問題はありますでしょうか?
SQL文は先日も書き込んだとおり、Enterprise ManagerのSQLクエリアナライザーで確認しましたが、これでselectできるのでしょうか?

だんだん、私が書いてるコードの文法に自信がなくなってきました。

申し訳ありませんが、ご教授お願いいたします。

スキルアップ/キャリアアップ(JOB@IT)