c#:未知构造函数'Parameter(String, TypeCode, Int)'& # 39; S

本文关键字:Int TypeCode 未知 构造函数 Parameter String | 更新日期: 2023-09-27 18:02:21

在后面的代码中,我使用下面的代码来执行插入命令。其中两个参数值将在用户单击特定按钮时设置。我这样写是因为我想重用SqlDataSource .

我的问题是这一行(@"Amount", TypeCode.Int16, amount)。具体误差为C#: Unknown constructor Parameter(String, TypeCode, Int) of System.Web.UI.WebControls.Parameter。有人能指出我做错了什么吗?或者,请告诉我我可以采取什么步骤来调试它。我卡住了。

    protected void InsertFees_Inserting(object sender, SqlDataSourceCommandEventArgs e)
{
    e.Command.Parameters["@UserID"].Value = Convert.ToInt16(RadGrid1.SelectedValues["UserID"].ToString());
    e.Command.Parameters["@Type"].Value = "D";
    e.Command.Parameters["@Date"].Value = DateTime.Now;
    e.Command.Parameters["@Amount"].Value = "";
    e.Command.Parameters["@Description"].Value = "";
}
protected void RadButton2_Click(object sender, EventArgs e)
{
    try
    {
        int amount = Convert.ToInt16(RadNumericTextBox1.Text);
        InsertFees.InsertParameters.Add(new Parameter("@Amount", TypeCode.Int16, amount));
        InsertFees.InsertParameters.Add(new Parameter("@Description", TypeCode.String, RadTextBox2.Text));
        InsertFees.Insert();
        Label2.Text = "Insert Successful";
    }
    catch(Exception ex)
    {
        Panel1.Visible = true;
        Label3.Text = ex.ToString();
    }
}

c#:未知构造函数'Parameter(String, TypeCode, Int)'& # 39; S

int是Int32,而Int16是Short

int amount

不如试试这个?

short amount = Convert.ToInt16(RadNumericTextBox1.Text);
InsertFees.InsertParameters.Add(new Parameter("@Amount", TypeCode.Int16, amount));

或者…

int amount = Convert.ToInt32(RadNumericTextBox1.Text);
InsertFees.InsertParameters.Add(new Parameter("@Amount", TypeCode.Int32, amount));

http://www.dotnetperls.com/int16-int32-int64

我同意Bemused的回答,但是您需要以这种方式将参数传递给SQLDataSource。

InsertFees.InsertParameters["Amount"].DefaultValue = amount.ToString();

当你添加参数像…InsertFees.InsertParameters.Add(new Parameter("@Amount", TypeCode.Int16, amount));,它将再次向Insert parameters集合添加参数,该集合已经在SQLDataSource InsertParameter集合

中定义。