protected virtual bool SaveData(bool clear) { try { this.CurrencyManager.EndCurrentEdit(); this.CheckFields(); BusinessObject bo = RemotingClient.CreateInstance(businessObject); bo.Save(DataSource); if (clear) this.ClearData(); return true; } catch (NoNullAllowedException e) { DataRowView dr = (DataRowView) this.CurrencyManager.Current; Regex r = new Regex("'(\\S*)'", RegexOptions.IgnoreCase); string name = dr.Row.Table.Columns[r.Match(e.Message).Groups[1].Value].Caption; MessageBox.Show(this, "Campo " + name + " não pode conter valores nulos.", this.Text); } catch (RecursiveDataException e) { DataRowView dr = (DataRowView) this.CurrencyManager.Current; Regex r = new Regex("'(\\S*)'", RegexOptions.IgnoreCase); string name = dr.Row.Table.Columns[r.Match(e.Message).Groups[1].Value].Caption; MessageBox.Show(this, "Campo " + name + " não pode ser filho dele mesmo ou de um de seus filhos.", this.Text); } catch (ConstraintDataException e) { DataRowView dr = (DataRowView) this.CurrencyManager.Current; Regex r = new Regex("'(\\S*)'", RegexOptions.IgnoreCase); string name = dr.Row.Table.Columns[r.Match(e.Message).Groups[1].Value].Caption; MessageBox.Show(this, "O campo " + name + " contém um valor inválido.", this.Text); } catch (ConstraintException e) { MessageBox.Show(this, "@@Constraint: "+e.Message, this.Text); } catch (DataException e) { MessageBox.Show(this, "@@Data:"+e.Message, this.Text); } catch (Exception e) { MessageBox.Show(this, e.Message, this.Text); } return false; }