将参数从 asp.net 传递到存储过程,并在 GridView 上显示结果



我想将参数从 asp.net 传递到我的存储过程。参数将从下拉列表中选择的值,然后从存储过程获取数据,并在用户单击网页上的提交按钮时 asp.net 显示在 Gridview 上。当我单击提交按钮时,没有弹出网格视图。我已经坚持了一段时间了。当我尝试调试 Fill 方法时,它会弹出一个异常,说我需要传递参数。例外复制如下。

System.Data.SqlClient.SqlException:"过程或函数'提交'需要参数'@Address',但未提供。

下面是我的存储过程

USE [Database]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [Submit]
@Address varchar(12),
@Number varchar(5),
@Name varchar(24),
@Type varchar(3)
as 
begin
select a.*, b.*
from Employee as a
inner join Department as b
on a.Number = b.Number
where a.Address = @Address and a.Number = @Number and a.name = @Name and b.Type = @Type 
end

下面是我的.cs代码

protected void Button1_Click1(object sender, EventArgs e)
{
con.Open();
string s = "Submit";
SqlCommand cmd = new SqlCommand();
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "Submit";
cmd.Parameters.Add("@Address", SqlDbType.VarChar).Value = DropDownList5.SelectedItem.Value;
cmd.Parameters.Add("@Number", SqlDbType.VarChar).Value = DropDownList2.SelectedItem.Value;
cmd.Parameters.Add("@Name", SqlDbType.VarChar).Value = DropDownList3.SelectedItem.Value;
cmd.Parameters.Add("@Type", SqlDbType.VarChar).Value = DropDownList4.SelectedItem.Value;
SqlDataAdapter da = new SqlDataAdapter(s, con);
DataSet ds = new DataSet();
da.Fill(ds);
GridView1.DataSource = ds;
GridView1.DataBind();
con.Close();
}

您正在创建仅使用字符串s而不是使用SqlCommandcmd创建DataAdapter:

SqlDataAdapter da = new SqlDataAdapter(s, con);

改为使用命令创建它。

试试这个

DataTable dt = new DataTable();
using(var reader = cmd.ExecuteReader()) {
dt.Load(reader);
}
GridView1.DataSource=dt;
GridView1.Databind():

最新更新