C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: グリッドのフッターだけを表示する方法


(過去ログ 87 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■51903 / inTopicNo.1)  グリッドのフッターだけを表示する方法
  
□投稿者/ こまったちゃん (1回)-(2010/07/26(Mon) 09:16:30)

分類:[C#] 

開発環境
Visual Studio2008 Professional Edition 評価版

初めましてよろしくお願い致します。

SQLでDBから取得したデータをバインドしてグリッドに表示しているのですが、
DBにデータがない場合、データ入力エリアを埋め込んでいるフッター部
だけは表示させたいのですが、やり方が分からないのでご教授下さい。

DBにデータ有りの場合、SQLでDBから取得したデータをバインドして
グリッドに下記のように表示しています。

|編集ボタン|        データ1|        データ2|        データ3|
|編集ボタン|        データ1|        データ2|        データ3|
|追加ボタン|データ入力エリア|データ入力エリア|データ入力エリア|


下記の実現方法が分かりません。
DBにデータがない場合、下記のようにフッター部だけを表示してデータを
追加する。

|追加ボタン|データ入力エリア|データ入力エリア|データ入力エリア|

データを追加すると

|編集ボタン|        データ1|        データ2|        データ3|
|追加ボタン|データ入力エリア|データ入力エリア|データ入力エリア|

以上、よろしくお願い致します。

引用返信 編集キー/
■51905 / inTopicNo.2)  Re[1]: グリッドのフッターだけを表示する方法
□投稿者/ マサヤ (75回)-(2010/07/26(Mon) 09:47:47)
データをバインドするときにRowの中身をチェックしてあげればいいと思います。
RowがnullのときはDataTableにDataRowをAddしないようにする。
詳しいやり方などは、データをバインドするときのソースがないとなんともいえないのですが。

引用返信 編集キー/
■51911 / inTopicNo.3)  Re[2]: グリッドのフッターだけを表示する方法
□投稿者/ こまったちゃん (2回)-(2010/07/26(Mon) 12:03:48)
2010/07/26(Mon) 12:04:48 編集(投稿者)
No51905 (マサヤ さん) に返信
> データをバインドするときにRowの中身をチェックしてあげればいいと思います。
> RowがnullのときはDataTableにDataRowをAddしないようにする。
> 詳しいやり方などは、データをバインドするときのソースがないとなんともいえないのですが。
> 

マサヤさんありがとうございます。

現在DBにデータがないと、aspx で宣言している EmptyDataText = "登録データなし" が走り
画面上にはグリッドは表示されずに「登録データなし」だけが表示されます。

バインドの方法は
SQLで取得したデータを元にデータを加工してテーブルごと取得している形にしています。
グリッドには加工したデータを、グリッドの関数DataBind()を使用してセットしています。
(aspxでText ='<%# Bind("AAA_AAA") を宣言して、加工したデータのヘッダー部と一致する
物をセットする)

@SQLで下記のようにデータ取得
あいうえお|      かきくけこ|      さしすせそ|
アイウエオ|      カキクケコ|      サシスセソ|

Aテーブルイメージでデータ加工
 AAA_AAA |        BBB_BBB |        CCC_CCC | ← ヘッダー部
あいうえお|      かきくけこ|      さしすせそ|
アイウエオ|      カキクケコ|      サシスセソ|

Bグリッド
|編集ボタン|         項目1|         項目2|         項目3|
|編集ボタン|        データ1|        データ2|        データ3|
|編集ボタン|        データ1|        データ2|        データ3|
|追加ボタン|データ入力エリア|データ入力エリア|データ入力エリア|

aspx でデータ1のテキストにセットする Text ='<%# Bind("AAA_AAA")
aspx でデータ2のテキストにセットする Text ='<%# Bind("BBB_BBB")
aspx でデータ3のテキストにセットする Text ='<%# Bind("CCC_CCC")

Cグリッド.DataBind() の実行結果
|     |         項目1|         項目2|         項目3|
|編集ボタン|   あいうえお|      かきくけこ|      さしすせそ|
|編集ボタン|   アイウエオ|      カキクケコ|      サシスセソ|
|追加ボタン|データ入力エリア|データ入力エリア|データ入力エリア|

私の質問での情報不足で申し訳ありませんでした。
上記のバインド方法なのでRowがnullの時は「登録データなし」しか表示されません。

以上、宜しくお願い致します。

引用返信 編集キー/
■51914 / inTopicNo.4)  Re[3]: グリッドのフッターだけを表示する方法
□投稿者/ マサヤ (77回)-(2010/07/26(Mon) 12:26:11)
>現在DBにデータがないと、aspx で宣言している EmptyDataText = "登録データなし" が走り
>画面上にはグリッドは表示されずに「登録データなし」だけが表示されます。

>上記のバインド方法なのでRowがnullの時は「登録データなし」しか表示されません。

すみません、ちょっと日本語が難解すぎて理解できません。

EmptyDataTextを設定しておいて、設定が実行されるとNGなんですか?
どうしても表示したいならば、殻のDataTable(カラムの設定のみ)を設定して、バインドすればいいのでは?


引用返信 編集キー/
■51915 / inTopicNo.5)  Re[4]: グリッドのフッターだけを表示する方法
□投稿者/ Mira (7回)-(2010/07/26(Mon) 12:42:48)
DataSourceが空かCountが0の場合はHeaderRow,FooterRow共にNullだったので
EmptyDataTemplateに自分で表示したい内容を書くしかなさそうです

例えば

<EmptyDataTemplate>
<table rules="all" border="1">
<tr>
<th scope="col"></th>
<th scope="col">項目1</th>
<th scope="col">項目2</th>
<th scope="col">項目3</th>
</tr>
<tr>
<td>
<asp:Button ID="ButtonInsert" runat="server" Text="追加ボタン" CommandName="Insert" />
</td>
<td>
<asp:TextBox ID="TextBoxArea1" runat="server"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="TextBoxArea2" runat="server"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="TextBoxArea3" runat="server"></asp:TextBox>
</td>
</tr>
</table>
</EmptyDataTemplate>

こまったちゃんさんの希望はFooterのみでしたがHeaderも表示しています
引用返信 編集キー/
■51923 / inTopicNo.6)  Re[5]: グリッドのフッターだけを表示する方法
□投稿者/ こまったちゃん (3回)-(2010/07/26(Mon) 16:18:02)
マサヤさん、Mira さん アドバイスありがとうございます。

マサヤさんのアドバイスを参考にして
以下の方法で実現してみようと思います。

@DBにデータが無ければ、仮のデータをDBにセット
ADBからデータを再取得
B取得したデータが仮のデータならグリッドの初めの行を非表示にする
 (DataGridView1.Rows(0).Visible = False)

それと・・・
>現在DBにデータがないと、aspx で宣言している EmptyDataText = "登録データなし" が走り
>画面上にはグリッドは表示されずに「登録データなし」だけが表示されます。
私のコーディングミスでした。

以上、宜しくお願い致します。


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -