public static bool IsEditValueInDataSource(this LookUpEdit lookupEdit)
        {
            if (lookupEdit.Properties.DataSource == null || !lookupEdit.HasValue())
            {
                return(false);
            }

            bool result;

            if (lookupEdit.Properties.DataSource is DataTable)
            {
                var dtLookup = lookupEdit.Properties.DataSource as DataTable;
                result = DataTableContainsValue(dtLookup, lookupEdit.Properties.ValueMember, lookupEdit.EditValue);
            }
            else if (lookupEdit.Properties.DataSource is BindingSource)
            {
                var bsLookup = lookupEdit.Properties.DataSource as BindingSource;
                result = BindingSourceContainsValue(bsLookup, lookupEdit.Properties.ValueMember, lookupEdit.EditValue);
            }
            else
            {
                result = false;
            }

            return(result);
        }
        /// <summary>
        /// Clears the Editvalue if no longer in DataSource
        /// </summary>
        public static void CheckEditValueInAgainstDataSource(this LookUpEdit lookupEdit)
        {
            if (!lookupEdit.HasValue())
            {
                return;
            }

            if (!lookupEdit.IsEditValueInDataSource())
            {
                lookupEdit.EditValue = null;
            }
        }
        /// <summary>
        /// Clears the Editvalue if no longer in DataSource
        /// </summary>
        public static T GetEditValue <T>(this LookUpEdit lookupEdit)
        {
            T editValue;

            if (lookupEdit.HasValue())
            {
                editValue = (T)lookupEdit.EditValue;
            }
            else
            {
                editValue = default(T);
            }

            return(editValue);
        }