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

VS2019中ASP.NET WebForms页面加载时调用存储过程

ASP.NET 页面加载/下拉选择时调用存储过程展示报表

1. 先在.aspx页面准备显示控件

假设用GridView展示报表数据,搭配DropDownList做筛选选择:

<asp:GridView ID="gvReport" runat="server" AutoGenerateColumns="False">
    <!-- 根据存储过程返回字段配置列,示例如下 -->
    <Columns>
        <asp:BoundField DataField="OrderID" HeaderText="订单ID" />
        <asp:BoundField DataField="CustomerName" HeaderText="客户名称" />
        <asp:BoundField DataField="OrderDate" HeaderText="下单日期" />
    </Columns>
</asp:GridView>

<asp:DropDownList ID="ddlFilter" runat="server" AutoPostBack="True" OnSelectedIndexChanged="ddlFilter_SelectedIndexChanged">
    <asp:ListItem Text="全部" Value="0"></asp:ListItem>
    <asp:ListItem Text="2024年订单" Value="2024"></asp:ListItem>
    <asp:ListItem Text="2023年订单" Value="2023"></asp:ListItem>
</asp:DropDownList>

2. 在.aspx.cs里写核心方法

先封装一个通用方法执行存储过程并返回数据集,方便页面加载和下拉选择时复用:

private DataSet GetReportData(string filterParam)
{
    // 替换成你的数据库连接字符串
    string connStr = "Data Source=你的服务器地址;Initial Catalog=你的数据库名;User ID=账号;Password=密码;";
    DataSet ds = new DataSet();
    
    using (SqlConnection conn = new SqlConnection(connStr))
    {
        using (SqlCommand cmd = new SqlCommand("你的存储过程名称", conn))
        {
            cmd.CommandType = CommandType.StoredProcedure;
            // 给存储过程传参,不需要参数可直接删除这行
            cmd.Parameters.AddWithValue("@FilterYear", filterParam);
            
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            adapter.Fill(ds);
        }
    }
    return ds;
}

3. 页面加载时调用

在Page_Load事件中,首次加载页面时绑定默认数据:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // 默认传"0"对应下拉的"全部"选项
        BindReportData("0");
    }
}

// 单独封装绑定方法,方便复用
private void BindReportData(string filterParam)
{
    DataSet reportDs = GetReportData(filterParam);
    gvReport.DataSource = reportDs.Tables[0];
    gvReport.DataBind();
}

4. 下拉选择时更新报表

实现DropDownList的选择事件,传选中值重新绑定数据:

protected void ddlFilter_SelectedIndexChanged(object sender, EventArgs e)
{
    string selectedValue = ddlFilter.SelectedValue;
    BindReportData(selectedValue);
}

注意事项

  • 确保数据库中已创建对应存储过程,参数和代码里的定义一致
  • 记得添加必要命名空间:using System.Data;、using System.Data.SqlClient;
  • 不需要筛选参数的话,直接删除filterParam相关代码即可
  • 可根据需求替换GridView为Repeater、DataList等其他数据绑定控件

内容的提问来源于stack exchange,提问作者Rockdaddy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 08:23:17