DevExpress XPO Persistent Object реализует метод Сохранить и Новый

В моем проекте Winform у меня есть простая форма детализации, где мы можем добавлять новые, редактировать и сохранять постоянные объекты, пока все не будет в порядке.

Элементы управления Edit связаны кодом в конструкторе from, и первый новый объект также передается конструктором формы при первом создании

Теперь я хотел бы реализовать метод Сохранить и Новый, но безуспешно

Я попробовал это, предполагая, что tbVehicule - это класс объекта, theVehicule - мой постоянный объект, а frmVehicule - моя форма детализации.

  // Form Constructor
    public frmVehicule(tbVehicule theVehicule)
            : this() {
                this.theVehicule = theVehicule;
                // method to bind all controls
                bindingFields();
        }
// Save and new method

private void barBtnSaveNew_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
    {
        this.Validate();
        theVehicule.Save();
        theVehicule = new tbVehicule(theVehicule.Session);

       }

процесс должен быть похож на другие ORM, такие как EF или Hibernate

1 ответ

Я решил проблему самостоятельно, поэтому я ответил на мой вопрос, надеюсь, что он кому-то поможет, он не работает, потому что механизм DataBinding работает только в одном направлении (форма Controls to Object)

если мы создаем новый объект в нашем связанном объекте, значения элементов управления не следуют (они не обновляются), для этого нам нужно сбросить привязки

public void  resetBindings() 
 {
  foreach (Control c in Form1.Controls)

            c.DataBindings.Clear();


            bindingFields();

 }


 public void  bindingFields() 
  {
    txtCode.DataBindings.Add("Text",theVehicule,"vhCode");
      ...
      ..
    txtActifInactif.DataBindings.Add("EditValue", theVehicule, "vhInactif");

  }


private void barBtnSaveNew_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
  {
    this.Validate();
    theVehicule.Save();
    theVehicule = new tbVehicule(theVehicule.Session);
    resetBindings();

   }

с приведенным выше фрагментом все работает нормально, возможно, есть более элегантный способ сброса привязки, я выбрал переопределение привязок, потому что это единственный метод, который я нашел и который работает на данный момент.,

Другие вопросы по тегам