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
相关产品推荐
相关产品推荐

