我有一个方法是这样的:
void bindGrid(byte? mPermission)
调用时声明的参数也是 byte? 类型,如下:
byte? mPermission = null;
if(0 != DropDownList1.SelectedIndex) mPermission = byte.Parse(DropDownList1.SelectedValue); //调用方法是提示错误
bindGrid(mPermission, IsLock, pageSize);然后直接调用怎么还提示 未提供该参数???
void bindGrid(byte? mPermission)
调用时声明的参数也是 byte? 类型,如下:
byte? mPermission = null;
if(0 != DropDownList1.SelectedIndex) mPermission = byte.Parse(DropDownList1.SelectedValue); //调用方法是提示错误
bindGrid(mPermission, IsLock, pageSize);然后直接调用怎么还提示 未提供该参数???
{ }byte? b = null;
xxx(b);
bindGrid(mPermission, IsLock, pageSize); 你要放里面三个...
---------------
意思是说mPermission是个可以为空值的Byte变量。不是说后面所有的参数都可以不填的。
byte b=null;//错误 貌似可空类型是2.0的一个新特性
调用方法是正确的,参数数量也使用了三个,但是只有这个参数有问题
这个在 web 页面中是的控件,dropdownlist1 有三个 listitem,第一项没有设置 value 值
页面的 postback 并不是这个控件引发的,而在回传前第一项是被选中状态不知 dropdownlist 在的选项在默认选项时,selectedindex 是否有值?(不选择就没有 selectedindex 值吗?)
其实我是这样用的,完整调用代码是这样的: byte? mPermission = null;
if(0 != DropDownList1.SelectedIndex)
mPermission = byte.Parse(DropDownList1.SelectedValue); bool? IsLock = null;
if (0 != DropDownList2.SelectedIndex)
IsLock = bool.Parse(DropDownList2.SelectedValue); int? pageSize = null;
pageSize = int.Parse(DropDownList3.SelectedValue); bindGrid(mPermission, IsLock, pageSize);
if(0 != DropDownList1.SelectedIndex) 的判断并未通过,mPermission 还是在 null 状态的
但不知为什么总是提示:参数化查询 '(@mPermission tinyint,@IsLock bit)SELECT mId 序号,mName 用户名,mQuest' 需要参数 @mPermission,但未提供该参数。
你的这个未提供参数跟定义可空类型没有任何关系~~~~你调试看一下你的SelectedIndex是否=-1另外就是看下你是怎么拼的@mPermission
如果为null,你是不是就没有赋值