第一个问题,首先你确定你的sqlparameter参数里的确是提供了相应的参数,然后给参数赋值DbNull.value;
第二个问题,我觉得首先你确定datagridview绑定的数据源里有结果,可以通过添加断点查看一下,我估计数据源里的结果为空,原因可能是你传递的参数值有误
存储过程的参数要这么写:
@p1 int=null,
@p2 int=null,
@p3 nvarchar(50)=null
存储过程里面这么判断:
if(@p1 is null)
BEGIN
END
else if(@p2 is not null)
BEGIN
END
在C#里面,如果要传递空的值类型,可以使用可空类型
public void M(int? p1,int? p2)
{
}
DbNull
http://msdn.microsoft.com/en-us/library/system.dbnull.aspx
在后面加is null