c#通过存储过程+参数手动将数据绑定到gridview

时间:2016-12-11 22:17:04

标签: c# asp.net sql-server stored-procedures gridview

我一直在收到错误

  

System.Data.SqlClient.SqlException:过程或函数'GetActiveComissions'需要参数'@param1',这是未提供的。

代码行da.Fill(dt)上的

。当我尝试根据存储过程将数据绑定到GridView时,清楚地提供参数。

代码:

ApplicationDbContext context = new ApplicationDbContext();
var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));
string user = User.Identity.GetUserId();

string storedprocedure = "GetActiveComissions";
SqlConnection cn = GetSqlCon.GetCon();

DataTable dt = new DataTable();

SqlCommand cmd = new SqlCommand(storedprocedure, cn); 
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@param1", user);

SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);

GridViewActiveComissions.DataSource = dt;
GridViewActiveComissions.DataBind();

我可以以错误的方式传递参数吗?

存储过程:

CREATE PROCEDURE [dbo].[GetActiveComissions]
    @param1 nvarchar(128)
AS
    SELECT 
        Comissions.CreationDate, Comissions.Accepted, 
        Comissions.BicycleModel, Comissions.BicycleType, 
        Comissions.YearOfAquisition, Comissions.Details, 
        AspNetUsers.WorkshopName 
    FROM 
        Comissions 
    INNER JOIN 
        AspNetUsers ON Comissions.WorkshopId = AspNetUsers.Id 
                    AND Comissions.Accepted = 1 
                    AND Comissions.ClientId = @param1
    RETURN 0

我已经单独测试了存储过程,并且在提供参数的情况下它确实按预期工作。

1 个答案:

答案 0 :(得分:2)

从参数名中删除'@',必须像这样

cmd.Parameters.AddWithValue("param1", user);
相关问题