protected override void UpdateData(int index)
        {
            try
            {
                if (index < 0)
                {
                    //persist delete operation
                    if (_provider.Items.IsDeletedCount > 0)
                    {
                        _provider.Update(this.CompId);
                    }
                }
                else
                {
                    //persist add/edit operations
                    if (_provider[index].IsDirty)
                    {
                        //validate the item
                        _provider[index].Validate();

                        //if valid, update the database
                        if (_provider[index].IsValid)
                        {
                            _provider.Update(this.CompId);
                        }
                    }
                    //clear error
                    _provider[index].SetErrorText(null);
                }
            }
            catch (ProviderException pex)
            {
                if (index > -1)
                {
                    _provider[index].SetErrorText(pex.Message);
                }
                ClientContext.HandleError(pex, this);
            }
            catch (Exception ex)
            {
                ClientContext.HandleError(ex, this);
            }
            finally
            {
                if (_provider.Items.IsDeletedCount > 0)
                {
                    _provider.Items.AddRange(_provider.Items.DeletedItems);
                    _provider.Items.DeletedItems.Clear();
                    this.BindingSource.ResetBindings(false);
                }
                EntityProvider.InvalidateLookupObject("PartnerItemXref");
            }
        }