C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[4]: データグリッドで一部の列の中身だけをデータバインドさせる
(過去ログ 44 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 5 記事 (1 - 5 表示)] <<
0
>>
■23567
/ inTopicNo.1)
データグリッドで一部の列の中身だけをデータバインドさせる
▼
■
□投稿者/ ぽっち
(24回)-(2008/08/18(Mon) 18:32:32)
分類:[ASP.NET (C#)]
こんにちは、いつもお世話になっております。
現在、データグリッド・データバインドの事で悩んでおります。
下記の様なデータがあったとして
【例】
発売時期 タイトル 著者 評価
20080301 ハリネズミ 静岡 咲 ***
20060904 LOVELESS 加藤成美 *****
20050101 ランダム 佐藤 蘭 **
著者の列にある「静岡 咲」の名前だけをデータバインドさせたい場合は、どのように記述すれば良いのでしょうか・・・?
DataTable data = (DataTable)Session["Data"]; //セッションでデータを受け取る
this.DataGrid1.DataSource = data.Rows[0][2];
this.DataGrid1.DataBind();
でやってみたら、「静」「岡」「咲」とバラバラでデータバインドされて下記のような出力をしてしまいました。
【出力結果】
著者
静
岡
咲
開発環境は、WindowsXP
使用言語は、ASP.NETとC#
です。
お手数ですが、誰かご教授下さい。
引用返信
編集キー/
編集
■23571
/ inTopicNo.2)
Re[1]: データグリッドで一部の列の中身だけをデータバインドさせる
▲
▼
■
□投稿者/ みきぬ
(44回)-(2008/08/18(Mon) 19:30:51)
■
No23567
(ぽっち さん) に返信
> 著者の列にある「静岡 咲」の名前だけをデータバインドさせたい場合は、どのように記述すれば良いのでしょうか・・・?
>
> DataTable data = (DataTable)Session["Data"]; //セッションでデータを受け取る
>
このDataTableをもとにDataViewを作って、DataViewのRowFilterプロパティに "著者 = '静岡 咲'" のような感じに設定して、そいつを DataSource に指定すればええんじゃないでしょうか。
> 【出力結果】
>
> 著者
> 静
> 岡
>
> 咲
>
これはこれでなかなか興味深い結果…。
引用返信
編集キー/
編集
■23601
/ inTopicNo.3)
Re[2]: データグリッドで一部の列の中身だけをデータバインドさせる
▲
▼
■
□投稿者/ ぽっち
(25回)-(2008/08/19(Tue) 09:06:09)
■
No23571
(みきぬ さん) に返信
> ■
No23567
(ぽっち さん) に返信
>>著者の列にある「静岡 咲」の名前だけをデータバインドさせたい場合は、どのように記述すれば良いのでしょうか・・・?
>>
>>DataTable data = (DataTable)Session["Data"]; //セッションでデータを受け取る
>>
> このDataTableをもとにDataViewを作って、DataViewのRowFilterプロパティに "著者 = '静岡 咲'" のような感じに設定して、そいつを DataSource に指定すればええんじゃないでしょうか。
>
>
>>【出力結果】
>>
>>著者
>>静
>>岡
>>
>>咲
>>
> これはこれでなかなか興味深い結果…。
>
コメント有難うございます!
なんとか自力で解決できました。
セッションでデータを受け取った後に、下記のソースによって表示させたくない列を削除し、DataSourceへデータを格納し
バインドで上手く行きました!!
//不要な列削除処理
data.Columns.Remove("No");
data.Columns.Remove("Title");
data.Columns.Remove("Point");
this.DataGrid1.DataSource = data;
this.DataGrid1.DataBind();
それにしても
>>【出力結果】
>>
>>著者
>>静
>>岡
>>
>>咲
>>
なったのは、本当に謎です。
解決済み
引用返信
編集キー/
編集
■23604
/ inTopicNo.4)
Re[3]: データグリッドで一部の列の中身だけをデータバインドさせる
▲
▼
■
□投稿者/ 魔界の仮面弁士
(821回)-(2008/08/19(Tue) 09:51:50)
2008/08/19(Tue) 11:45:43 編集(投稿者)
■
No23601
(ぽっち さん) に返信
> それにしても
> >>【出力結果】
> なったのは、本当に謎です。
元のコードは、要するに
dataGrid1.DataSource = "静岡 咲";
dataGrid1.DataBind();
を実行する事になりますよね。文字単位で分離されたのは、
string s = "静岡 咲";
IEnumerable<char> x = name;
IEnumerable y = x;
であるからです。String クラスは IEnumerable インターフェイスを実装しています。
System.Web.UI.WebControls.DataGrid.DataSource は、「IEnumerable(または IListSource)」を
受け取る仕様なので、結果的に char ごとに分離されて表示されることになります。
ちなみに、System.Windows.Forms.DataGridView.DataSource の場合は、
IEnumerable を受け取らないため、このような現象は発生しません。
# ASP.NET の DataGrid の場合、IEnumerable/IListSource を受け取ります。
# WinForm の DataGrid の場合、IList/IListSource を受け取ります。
# WinForm の DataGridView は、IList/IListSource (/IBindingList/IBindingListView) を受け取ります。
## なお、IList インターフェイスは、IEnumerable インターフェイスを継承しています。
解決済み
引用返信
編集キー/
編集
■23625
/ inTopicNo.5)
Re[4]: データグリッドで一部の列の中身だけをデータバインドさせる
▲
▼
■
□投稿者/ ぽっち
(26回)-(2008/08/19(Tue) 15:15:53)
■
No23604
(魔界の仮面弁士 さん) に返信
> 2008/08/19(Tue) 11:45:43 編集(投稿者)
>
> ■
No23601
(ぽっち さん) に返信
>>それにしても
>>>>【出力結果】
>>なったのは、本当に謎です。
>
> 元のコードは、要するに
> dataGrid1.DataSource = "静岡 咲";
> dataGrid1.DataBind();
> を実行する事になりますよね。文字単位で分離されたのは、
> string s = "静岡 咲";
> IEnumerable<char> x = name;
> IEnumerable y = x;
> であるからです。String クラスは IEnumerable インターフェイスを実装しています。
>
> System.Web.UI.WebControls.DataGrid.DataSource は、「IEnumerable(または IListSource)」を
> 受け取る仕様なので、結果的に char ごとに分離されて表示されることになります。
>
判りやすい御説明・解説誠にありがとうございます!!
なるほど・・・そういう仕様があるのですね!!
すごく納得し、勉強になりました!!
本当にありがとうございます!!
解決済み
引用返信
編集キー/
編集
トピック内ページ移動 / <<
0
>>
このトピックに書きこむ
過去ログには書き込み不可
管理者用
-
Child Tree
-