@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

現在選択中の行データ(SelectedRows)を印刷したい

1
投稿者投稿内容
未記入
会議室デビュー日: 2006/10/21
投稿数: 13
投稿日時: 2007-03-31 17:18
VB2005です。

フォームにはDataGridView1とButton1とPrintDocument1があります。
DataGridView1にSQLSevrerからのテーブルデータを表示しています。
Button1で行を選択し、PrintDocument1.Printを実行しています。

現在選択中の行データ(SelectedRows)を印刷したいのですが、


Private Sub PrintDocument1_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage

〜SQLServerに接続しています〜
〜SQL文を発行しテーブルデータを表示しています〜


Dim row As DataGridViewRow
For Each row In DataGridView1.SelectedRows

'テーブルの内容を出力
Dim dr As DataRow
For Each dr In ds.Tables(0).Rows

'1レコードを出力
e.Graphics.DrawString( _
dr("サンプル1").ToString.PadRight(10) & _
dr("サンプル2").ToString.PadRight(20, " ") & _
dr("サンプル3").ToString.PadLeft(5), _
f, Brushes.Black, _
x, y + (cnt * pitch))

'印刷位置を更新
cnt = cnt + 1
Next

Next

End Sub


これだと選択中の行データだけを印刷したいのに、
全データを印刷しています。どうすれば良いでしょうか?
KI
大ベテラン
会議室デビュー日: 2007/01/10
投稿数: 239
投稿日時: 2007-03-31 18:09
引用:

For Each row In DataGridView1.SelectedRows

For Each dr In ds.Tables(0).Rows



2つのループの意味を理解していますか?
最初のループは DataGridView の選択行についてループしています。
次のループは DataGridView のデータソースとなっている
テーブルの全行に対してループしています。

データソースの行数は、全データ件数ですから、
1行選択された状態ですと、最初のループは1回、
次のループは全データ件数回処理されますので、
全データが出てしまうのは当然ですよね。
もし3行選択された状態ですと、全データが3回出力されてしまうと思います。

つまり、選択行だけ印刷したいなら、2番目のループは不要です。
データは DataRow から取得するのではなく、
DataGridViewCell から取得すればよいと思います。
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-04-02 09:27
2005 なら、SelectedRows プロパティというものもありますね。

http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datagridview.selectedrows(VS.80).aspx
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-04-02 09:56
引用:

R・田中一郎さんの書き込み (2007-04-02 09:27) より:

2005 なら、SelectedRows プロパティというものもありますね。
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datagridview.selectedrows(VS.80).aspx

引用:

未記入さんの書き込み (2007-03-31 17:18) より:

現在選択中の行データ(SelectedRows)を印刷したいのですが、
  :
For Each row In DataGridView1.SelectedRows


(;^-^)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
R・田中一郎
ぬし
会議室デビュー日: 2005/11/03
投稿数: 979
投稿日時: 2007-04-02 15:26
すみません。見逃していました orz

#久しぶりにやらかしてしまった・・・
_________________
R・田中一郎 -  R.Tanaka.Ichiro’s Blog
1

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