C#Winform Datagrid CRUD

时间:2011-08-16 11:38:16

标签: c# winforms datagrid crud

我使用3层应用程序。我创建了数据访问层和业务层。如何将其与View层上的Datagrid绑定?

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());
            }

        }
    }

我完成了阅读和删除,但没有创建和更新。

顺便说一句,如何将这些创建和更新连接到我的businnes图层,如何检索新行值或CHANGE行值。

这些我在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 个答案:

答案 0 :(得分:1)

更新: 要使Create / Update正常工作,通常使用Grid RowEditTemplate控件(基本上是另一个WinForm,它允许您进行额外的验证并创建/更新现有值)。 Infragistics很好。

  1. 您需要确保在网格中使用BindingSource,这样当您更新集合中的项目时,它会自动在网格中更新
  2. 您还需要确保您的BusinessObject / DomainModel / CollectionItem实现了INotifyPropertyChanged,这样当您更新业务层中的值时,它会自动在网格中更新
  3. 当您单击“创建/更新”按钮时,它会将现有值(如果更新,否则为新的默认值)加载到行编辑模板控件中
  4. 当点击提交创建时,它将创建新的BusinessObject并将其添加到您的集合中。当您将集合绑定到网格时,Grid将自动刷新。
  5. 与提交更新相同,如果更新集合中的相同引用对象,任何更新都应反映在网格中
  6. 你可能需要修复你的标签,因为你在谈论ASP而不是WinForms。

    我正在使用Telerik的Grid和ASP MVC 2 atm。通过将数据序列化到ViewModel中,您可以在控制器中使用ViewModel(大部分时间都不必乱用Request.Params)。

    See Telerik GridASP MVC