You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 00:23:21