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