2011-07-18 80 views
0

在我的代碼後面我有下面的代碼來執行插入命令。當用戶單擊某個特定按鈕時,將設置兩個參數值。我以這種方式分手了,因爲我想重複使用SqlDataSourceC#:未知的構造函數'System.Web.UI.WebControls.Parameter'的參數(String,TypeCode,Int)'

我的問題是這條線(@"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

需要修補的'.NET framework'上服務器,因爲此功能包含在.NET 2.0中以後的Service Pack中。 – 2011-12-08 14:24:13

回答

0

我同意Bemused答案,但你需要的參數傳遞給你的SqlDataSource這種方式。

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

爲你添加一些參數,如... InsertFees.InsertParameters.Add(new Parameter("@Amount", TypeCode.Int16, amount));,它將再次添加參數到插入的參數集合,它已在SqlDataSource的InsertParameter收集已定義

+0

謝謝。如何在上面的代碼中指定dbtype?它期待一個字符串,我需要給它一個int。 – hughesdan

+0

您可以使用amount.ToString()並傳遞值,因爲DefaultValue屬性需要String值,但是SQLDataSource自動處理這個,你在你的SQLDataSource中提到了Insert Parameter集合。 –

+0

或者您可以嘗試:InsertFees.InsertParameters [「Amount」]。DbType = TypeCode.Int16 –

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

+0

謝謝......我沒有意識到int是int32。今天學到了一些東西。不幸的是,建議的修復返回相同的錯誤。 – hughesdan

相關問題