C#:'System.Web.UI.WebControls.Parameter'的未知构造函数'Parameter(String,TypeCode,Int)'

时间:2011-07-18 17:27:59

标签: c# asp.net sql-server

在我的代码后面,我有以下代码来执行insert命令。当用户单击特定按钮时,将设置两个参数值。我这样做了,因为我想重用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();
    }
}

2 个答案:

答案 0 :(得分:2)

int 是Int32,而Int16是

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

答案 1 :(得分:0)

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

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

当你添加像InsertFees.InsertParameters.Add(new Parameter("@Amount", TypeCode.Int16, amount));这样的参数时,它会再次将参数添加到Insert Parameters集合中,你已经在SQLDataSource的InsertParameter集合中定义了