Hola que tal, bueno la solucion que se me ocurre es esta.
1.- Como te dijo: sculdinerisgod, vas a ocupara una tabla temporal a fuerzas.
2.- En las propiedades del Grid en el CellEndEdit, de la columna que necesitas se mande llamar al SP.
3.- En la tabla temporal tienes que grabar la información capturada y el renglon, esto es por si el usuario regresara y modificara la información previamente capturada.
4.- Validar si estas haciendo un Insert o un Update, para que solo afectes o insertes la nueva información.
5.- Limpiar el grid y volver a vaciar la información que contiene la tabla temporal.
Este ultimo paso, tienes que tener en cuenta que te puede poner algo de peso a la consulta.
Otra solucion, seria el manejo de listas ( Con Linq ). Asi todo lo manejas en la memoria y te olvidas de las consultas, es mas rapida.
Te debo un ejemplo con un UPDATE en Linq
, por que apenas lo estoy manejando y solo e hecho SELECTS y LEFT JOIN. Pero se que si se pudiera utilizar este metodo.
Unico detalle de la lista, ocuparias el Framework 3.5
Espero te sirva