C # Winform Datagrid CRUD - PullRequest
       23

C # Winform Datagrid CRUD

3 голосов
/ 16 августа 2011

Я использую 3-х уровневое приложение. Я создал слой доступа к данным и бизнес-уровень. Как я могу связать это с моим Datagrid на слое View?

public partial class Magasinier : Form
{
    Magasinier_BL oMag_BL = new Magasinier_BL();

    public Magasinier()
    {
        InitializeComponent();
        GetDataOrdre();
    }

    public void GetDataOrdre()
    {            
        dataGridView_Mag.DataSource = oMag_BL.Get_All_Magasinier_BL();
        dataGridView_Mag.DataMember = "MagTable";
    }


}

  private void Del_Mag(object sender, DataGridViewRowCancelEventArgs e)
    {
        if (!e.Row.IsNewRow)
        {
            DialogResult res = MessageBox.Show("Etes-vous sûr de vouloir supprimer cette ligne ?", "confirmation suppression",
                     MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (res == DialogResult.No)
            {
                e.Cancel = true;
            }
            else
            {
                oMag_BL.DelMag_BL(e.Row.Cells["CODE_MAG"].Value.ToString());
            }

        }
    }

Я сделал чтение и удаление, но не создание и обновление.

Как я могу соединить эти Create и Update со своим бизнес-слоем, кстати, как я могу получить НОВОЕ значение строки или ИЗМЕНИТЬ значение строки.

это то, что я сделал в ASP.NET: Создать

 protected void Insrting_Obj_ClientMag(object sender, DevExpress.Web.Data.ASPxDataInsertingEventArgs e)
{
    Pers_Magasinier oPersMag = new Pers_Magasinier();
    oPersMag.NoClient = Id;
    oPersMag.CodeMag = e.NewValues["CODE_MAG"].ToString();
    oPersMag.NomUsr = e.NewValues["NOM"].ToString();
    oPersMag.PrenomUsr = e.NewValues["PRENOM"].ToString();
    oPersMag.MemoMag = e.NewValues["MEMO"].ToString();

    oMag_BL.InstUpdtMag_BL(oPersMag, true);       

    //To Stop processing Gridview
    ASPxGridView_Mag.CancelEdit();
    e.Cancel = true;

    //Rebind donne
    GetDataMags();
}

и обновление:

protected void Updting_Obj_ClientMag(object sender, DevExpress.Web.Data.ASPxDataUpdatingEventArgs e)
{
    Pers_Magasinier oPersMag = new Pers_Magasinier();
    oPersMag.NoClient = Id;
    oPersMag.CodeMag = e.NewValues["CODE_MAG"].ToString();
    oPersMag.NomUsr = e.NewValues["NOM"].ToString();
    oPersMag.PrenomUsr = e.NewValues["PRENOM"].ToString();
    oPersMag.MemoMag = e.NewValues["MEMO"].ToString();

    oMag_BL.InstUpdtMag_BL(oPersMag, false);      

    ASPxGridView_Mag.CancelEdit();
    e.Cancel = true;
    GetDataMags();
}

Теперь, как я могу это сделать в WinForm?

Заранее спасибо

1 Ответ

1 голос
/ 17 августа 2011

Обновление: чтобы заставить работать Create / Update, вы обычно используете Grid RowEditTemplate элемент управления (который по сути является другой WinForm, которая позволяет вам выполнять дополнительную проверку и создавать / обновлять существующие значения). Инфраструктура получил хороший.

  1. Вам необходимо убедиться, что вы используете BindingSource со своей сеткой, чтобы при обновлении элемента в вашей коллекции он автоматически обновлялся в сетке
  2. Вам также понадобитсячтобы ваш BusinessObject / DomainModel / CollectionItem реализовал INotifyPropertyChanged, чтобы при обновлении значений в бизнес-уровне он автоматически обновлялся в сетке
  3. Когда вы нажимаете кнопку «Создать / обновить», он загружает существующиеЗначения (при обновлении, в противном случае новые значения по умолчанию) в строке Редактировать элемент управления
  4. При нажатии кнопки «Отправить» создаст новый BusinessObject и добавит его в свою коллекцию.поскольку ваша коллекция привязана к сетке, Grid будет автоматически обновляться.
  5. То же самое с Submit Update, если вы обновляете тот же объект ссылок в коллекции, любое обновление должно отражаться в Grid

вам может потребоваться исправить ваши теги, потому что вы говорите о ASP, а не о WinForms.

Я использую Telerik's Grid с ASP MVC 2 atm.Очень помогает с сериализацией ваших данных в ViewModel, и вы работаете с ViewModel в своих контроллерах (не нужно возиться с Request.Params большую часть времени).

См. Telerik Grid и ASP MVC

...