- PR -

GridViewの表示について。

1
投稿者投稿内容
108
常連さん
会議室デビュー日: 2007/12/12
投稿数: 45
投稿日時: 2007-12-12 13:22
失礼いたします。
ASP.NET(VB) VisualStudio2005にて開発を行っています。

AllowPaging = true
PageSize = 10を指定しています。
SQLで取得したデータをGridViewにデータバインドした際、
表示データが10*1,10*2・・・・件でない場合、残りの行を空行で表示したいのですが、
まず件数を取得して、別SQL:(10-データ数の)空行取得とUNION
してバインドする方法以外に思いつきません。

プロパティ設定などで簡単にできないものでしょうか?
ご教授願います。


どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-12-12 14:33
> プロパティ設定などで簡単にできないものでしょうか?

できないですね。
フレームワークで用意されているコントロールはそれに合わせた使い方からちょっとはずれようとするとなかなか大変だったりします。

> まず件数を取得して、別SQL:(10-データ数の)空行取得とUNIONしてバインドする方法以外に思いつきません。

これではできないかも。
そもそも件数を取得するのがバインドが起きてからじゃないと取り出せないんじゃないかな。。。
108
常連さん
会議室デビュー日: 2007/12/12
投稿数: 45
投稿日時: 2007-12-12 18:50
どっとねっとふぁん様 ご返答ありがとうございます。

>できないですね。
フレームワークで用意されているコントロールはそれに合わせた使い方からちょっとはずれようとするとなかなか大変だったりします。

そうですか。。。
甘くないですねぇ。。。
困りましたね。

>> まず件数を取得して、別SQL:(10-データ数の)空行取得とUNIONしてバインドする方 法以外に思いつきません。

>これではできないかも。
そもそも件数を取得するのがバインドが起きてからじゃないと取り出せないんじゃない>な。。。

説明不足でしたが、
この件数とは、GridViewの行数ではなく(まぁそうなんですが…)、
SQLで取得できるデータ数のことです。
(SQLを投げた戻り値 DataSetのretds.Tables.Item(0).Rows.Count)
そしてdim dt As New retds.Tables.Item(0)をGridViewにバインドしています。

1)DBからデータ取得するSQLに空行追加。
2)データテーブルに空行を追加してバインド。
3)バインド後にGridViewに行追加。

スマートな方法はあるでしょうか?
もしくは別の方法があるならご教授願います。
108
常連さん
会議室デビュー日: 2007/12/12
投稿数: 45
投稿日時: 2007-12-12 18:55
>dim dt As New retds.Tables.Item(0)
dim dt as New DataTable
dt = retds.Tables.Item(0)
です。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2007-12-12 19:06
取得した DataTable に、ページングに合うようにダミーの行を
追加するというのはどうでしょうか。

コード:

    Dim x As Integer = (dt.Rows.Count \ 10 + 1) * 10
    For i As Integer = dt.Rows.Count + 1 To x
        dt.Rows.Add()
    Next


とりあえず何も推敲してませんが、こんな感じで。
_________________
ぽぴ王子@わんくま同盟
ぽぴ王子の人生プログラミング中 / ぽぴンち。
108
常連さん
会議室デビュー日: 2007/12/12
投稿数: 45
投稿日時: 2007-12-13 10:50
ぽぴ王子さん、どっとねっとふぁんさん
ありがとうございました。

ぽぴ王子さんに提案して頂いた方法→前述の2)
で実装することにしました。

まだページングの問題が残っていますが・・・w

ありがとうございました。
1

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