[英]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.