Cómo pasar valores nulos o parámetros vacíos a procedimientos almacenados en C#~
La segunda pregunta, creo que primero debe asegurarse de que los datos vinculados al datagridview Hay resultados en la fuente. Esto se puede comprobar agregando puntos de interrupción. Supongo que el resultado en la fuente de datos está vacío, tal vez porque el valor del parámetro que pasaste es incorrecto.