如何在C# ReportView中添加项工具栏并实现打印后更新表字段
一、在C# ReportViewer控件中添加自定义工具栏项
- 先确保ReportViewer控件的
ShowToolBar属性设置为true(默认启用,若被关闭需先开启)。 - 通过控件的
ToolBar.Items集合添加自定义工具栏项,示例代码如下:// 实例化自定义工具栏按钮 ToolStripButton customToolBtn = new ToolStripButton(); customToolBtn.Text = "导出Excel"; // 设置按钮文本 customToolBtn.Image = Properties.Resources.ExcelIcon; // 可选:设置按钮图标 customToolBtn.Click += CustomToolBtn_Click; // 绑定点击事件 // 将按钮添加到ReportViewer工具栏 reportViewer1.ToolBar.Items.Add(customToolBtn); - 进阶自定义:如需调整项的位置,可使用
Insert方法指定索引;若要替换默认工具栏,可先调用reportViewer1.ToolBar.Items.Clear()清空原有项,再添加自定义内容。
二、报表打印状态同步更新数据表Print列
利用ReportViewer的PrintDialogCompleted事件判断打印结果,同步更新数据库字段:
- 绑定事件:在窗体初始化或控件加载时绑定
PrintDialogCompleted事件:reportViewer1.PrintDialogCompleted += ReportViewer1_PrintDialogCompleted; - 事件处理逻辑:
private void ReportViewer1_PrintDialogCompleted(object sender, PrintDialogCompletedEventArgs e) { string connStr = "Data Source=你的服务器;Initial Catalog=你的数据库;Integrated Security=True"; string updateSql; // 根据对话框结果判断打印状态 if (e.DialogResult == DialogResult.OK) { updateSql = "UPDATE 目标数据表 SET Print = 'Y' WHERE 筛选条件"; } else { updateSql = "UPDATE 目标数据表 SET Print = 'N' WHERE 筛选条件"; } // 执行数据库更新 using (SqlConnection conn = new SqlConnection(connStr)) { using (SqlCommand cmd = new SqlCommand(updateSql, conn)) { conn.Open(); cmd.ExecuteNonQuery(); } } } - 注意事项:
- 替换代码中的
connStr、目标数据表和筛选条件为实际业务值,确保精准定位需要更新的记录。 - 若涉及批量打印,需调整筛选条件匹配批量数据;数据库操作建议添加异常捕获,避免因连接或SQL错误导致程序崩溃。
- 替换代码中的
内容的提问来源于stack exchange,提问作者Eric Vo
相关产品推荐
相关产品推荐

