在我的代码后面,我有以下代码来执行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();
}
}
答案 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));
答案 1 :(得分:0)
我同意Bemused
回答,但您需要以这种方式将参数传递给SQLDataSource。
InsertFees.InsertParameters["Amount"].DefaultValue = amount.ToString();
当你添加像InsertFees.InsertParameters.Add(new Parameter("@Amount", TypeCode.Int16, amount));
这样的参数时,它会再次将参数添加到Insert Parameters集合中,你已经在SQLDataSource的InsertParameter集合中定义了