我有一个方法是这样的:
    void bindGrid(byte? mPermission)
调用时声明的参数也是 byte? 类型,如下:
            byte? mPermission = null;
            if(0 != DropDownList1.SelectedIndex) mPermission = byte.Parse(DropDownList1.SelectedValue);            //调用方法是提示错误
            bindGrid(mPermission, IsLock, pageSize);然后直接调用怎么还提示 未提供该参数???

解决方案 »

  1.   

    void bindGrid(byte? mPermission)bindGrid(mPermission, IsLock, pageSize);这也不一致啊~~~private void xxx(byte? b)
    { }byte? b = null;
    xxx(b);
      

  2.   

    void bindGrid(byte? mPermission) 你给的方法就1个参数
     bindGrid(mPermission, IsLock, pageSize); 你要放里面三个...
      

  3.   

    byte? mPermission
    ---------------
    意思是说mPermission是个可以为空值的Byte变量。不是说后面所有的参数都可以不填的。
      

  4.   

    byte? mPermission =null;//?在这里表示该类型为可空,也就是说可以设置为null
    byte b=null;//错误 貌似可空类型是2.0的一个新特性
      

  5.   

    抱歉,因为其他参数没有问题,所以提问时把问题简单化了
    调用方法是正确的,参数数量也使用了三个,但是只有这个参数有问题

    这个在 web 页面中是的控件,dropdownlist1 有三个 listitem,第一项没有设置 value 值
    页面的 postback 并不是这个控件引发的,而在回传前第一项是被选中状态不知 dropdownlist 在的选项在默认选项时,selectedindex 是否有值?(不选择就没有 selectedindex 值吗?)
      

  6.   


    其实我是这样用的,完整调用代码是这样的:            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,但未提供该参数。
      

  7.   


    你的这个未提供参数跟定义可空类型没有任何关系~~~~你调试看一下你的SelectedIndex是否=-1另外就是看下你是怎么拼的@mPermission 
    如果为null,你是不是就没有赋值