- - PR -
現在選択中の行データ(SelectedRows)を印刷したい
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 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 これだと選択中の行データだけを印刷したいのに、 全データを印刷しています。どうすれば良いでしょうか? | ||||||||
|
投稿日時: 2007-03-31 18:09
2つのループの意味を理解していますか? 最初のループは DataGridView の選択行についてループしています。 次のループは DataGridView のデータソースとなっている テーブルの全行に対してループしています。 データソースの行数は、全データ件数ですから、 1行選択された状態ですと、最初のループは1回、 次のループは全データ件数回処理されますので、 全データが出てしまうのは当然ですよね。 もし3行選択された状態ですと、全データが3回出力されてしまうと思います。 つまり、選択行だけ印刷したいなら、2番目のループは不要です。 データは DataRow から取得するのではなく、 DataGridViewCell から取得すればよいと思います。 | ||||||||
|
投稿日時: 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 | ||||||||
|
投稿日時: 2007-04-02 09:56
(;^-^) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2007-04-02 15:26
すみません。見逃していました orz
#久しぶりにやらかしてしまった・・・ _________________ R・田中一郎 - R.Tanaka.Ichiro’s Blog |
1