我正在使用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
事先并使用s作为最后一个参数,但这没有用。我已将MealNumberDD的返回值输出到OutputLabel,并按预期输出。仍然没有运气,信息不会显示。我也经历了调试器,变量正在按预期完全传递。我不知道这是怎么回事。
答案 0 :(得分:1)
添加参数的方法会将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;
答案 1 :(得分:0)
您已尝试将字符串值传递给分类为Int32
您可以做的是先将您的值解析为int(也许使用TryParse)
var mealNumberString = MealNumberDD.Text;
int mealNumberParsed = 0;
Int32.TryParse(out mealNumberParsed, mealNumberString);
然后你可以像现在一样使用它来继续使用它
RecipesDataSource.SelectParameters.Add("MealNumber", DbType.Int32,mealNumberParsed )