20行のテーブルがあり、各ページに5つの従業員名を印刷したいとします。合計4ページ。C#SQL結果から複数のページを印刷する
私の現在のコードの問題は、最初のページにすべての従業員名を表示しようとしていることです。さらに、無限ループで終了します。 これは私のコードです
DataTable dt = new DataTable();
private void FillDataTable()
{
SqlConnection sqlConnection = GetConnection();
SqlCommand cmd = new SqlCommand();
SqlDataReader reader;
string query =
@"SELECT * FROM EMPLOYEES ORDER BY ID";
cmd.CommandText = query;
cmd.CommandType = CommandType.Text;
cmd.Connection = sqlConnection;
sqlConnection.Open();
reader = cmd.ExecuteReader();
if (reader.HasRows)
{
dt.Load(reader);
}
else
{
Console.WriteLine("No rows found.");
}
reader.Close();
sqlConnection.Close();
}
private void printDocument_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
foreach(DataRow row in dt.Rows)
{
e.Graphics.DrawString(row[4].ToString(), new Font("Arial", 12, FontStyle.Bold), Brushes.Black, e.MarginBounds.Left, y, new StringFormat());
y += 100;
if (itemperpage < 5)
{
itemperpage += 1;
e.HasMorePages = false;
}
else
{
e.HasMorePages = true;
}
}
}
private void printDocument_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
y = 80;
itemperpage = 0;
}
私はここで何が欠けていますか? SQL結果表が完成するまで各ページに5人の従業員名を表示するには?
あなたがtrueにHasMorePagesを設定するとき、あなたは、次のページを起動し、あなたがゼロにitemperpageをリセットする必要がある場合のDataTableの行に正しいオフセットから開始する必要がありますブレーク条件を必要としています。 – john