簡體   English   中英

C#中帶有變量的奇怪行為

[英]Strange behavior with variables in c#

我使用的是sqlDataSource,它從數據庫中拉出許多行,具體取決於從下拉列表中選擇的行數。 這是我的代碼隱藏代碼:

var query = "SELECT TOP (@MealNumber)  * FROM Recipes";
RecipesDataSource.SelectCommand = query;
RecipesDataSource.SelectParameters.Add("MealNumber", DbType.Int32,MealNumberDD.SelectedValue);

MealNumberDD是我的下拉菜單的ID。 當我切換最后一個參數

RecipesDataSource.SelectParameters.Add("MealNumber", DbType.Int32,MealNumberDD.SelectedValue)

從MealNumberDD.SelectedValue到“ 3”,查詢運行完美,信息顯示在網格中。 當我將其切換回時,什么都沒有顯示。

我試過string s = MealNumberDD.Text聲明string s = MealNumberDD.Text並使用s作為最后一個參數,但這無濟於事。 Ive將MealNumberDD的返回值輸出到OutputLabel,並按預期輸出。 仍然沒有運氣,該信息未顯示。 我還通過了調試器,變量完全按預期方式傳遞。 我不知道這是怎么回事。

您添加參數的方法會將param值添加為字符串。 MSDN

你需要做

var s = MealNumberDD.Text;

var param = new SQLParameter("MealNumber", SQLDbType.Int)
{
    Value = Convert.ToInt32(s)
};

RecipesDataSource.SelectParameters.Add(param); 
var query = "SELECT TOP (@MealNumber) * FROM Recipes"; 
RecipesDataSource.SelectCommand = query;

您試圖將字符串值傳遞到分類為Int32

您可以做的是先將您的值解析為一個int(也許使用TryParse

var mealNumberString = MealNumberDD.Text;
int mealNumberParsed = 0;
Int32.TryParse(out mealNumberParsed, mealNumberString);

然后,您可以像現在使用它一樣繼續使用它

RecipesDataSource.SelectParameters.Add("MealNumber", DbType.Int32,mealNumberParsed )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM