Tengo un formulario de captura para una orden de trabajo, y tiene un control CustomerBindingSource
y WorksOrderBindingSource
. La mayoría de los campos de edición están vinculados al WorksOrderBindingSource
, con un ComboBox cuya lista está vinculada al CustomerBindingSource
, y su SelectedValue
está vinculado al campo CustomerId
en el WorksOrderBindingSource
. Esto es muy rutinario y estándar, no hay bromas aquí.¿Cómo puedo establecer un registro actual de BindingSource como nulo?
Luego, también tengo algunos campos de cuadros de texto en los que utilizo para mostrar las propiedades del cliente actualmente seleccionado, para la orden de trabajos actualmente editada. También he vinculado estos campos al CustomerBindingSource
. Cuando se selecciona un cliente, estos campos muestran las propiedades de ese cliente como se esperaba.
Mi problema es cuando quiero utilizar el formulario para capturar una nueva orden de trabajo. Represento un nuevo objeto WorksOrder
, con CustomerId == null
y lo ato al WorksOrderBindingSource
. No tengo ningún objeto en el CustomerBindingSource
con un Id == null
, por lo que, como era de esperar, el cuadro combinado desplegable está en blanco, pero la propiedad CustomerBindingSource.Current
apunta al primer objeto del Cliente en ese origen de datos. Los campos de visualización vinculados al cliente muestran valores para ese cliente, mientras que aún no se ha seleccionado ningún cliente.
La única solución para esto que es aparente para mí parece torpe. En él, tengo dos fuentes de enlace tipeadas por el Cliente, una para un cliente seleccionado y para completar los campos de visualización del cliente, y otra simplemente para llenar el menú desplegable del cliente. Luego, tengo que manejar un evento de selección, y solo si se selecciona un cliente, encuentre ese cliente en el origen de enlace para los campos de visualización, y si no hay ninguno seleccionado, establezca el origen de datos para los campos de visualización en nulo. Esto se siente terriblemente torpe. ¿Hay alguna otra manera de lograr lo que quiero?
¿Por qué no agregar un elemento "por favor-seleccione-un-cliente" a la fuente de enlace? – Bijan
¿Qué sucede para obligar al usuario a guardar ediciones actuales para que se le asigne un CustomerID válido a su NewRow? –