c# Winform数据网格CRUD

本文关键字:网格 CRUD 数据网 数据 Winform | 更新日期: 2023-09-27 18:05:38

我使用3-Tiers Application。我已经创建了数据访问层和业务层。我如何将它与视图层上的数据网格绑定?

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连接到我的业务层,顺便说一下,我如何检索NEW行值或CHANGE行值。

这些是我在ASP中所做的。净:创建

 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中做到这一点?

Thanks you in advance

c# Winform数据网格CRUD

更新:为了让创建/更新工作,你通常使用gridrowedittemplate控件(这基本上是另一个WinForm,它允许你做额外的验证和创建/更新现有的值)。弹跳学有个好主意。

  1. 你需要确保你在网格中使用了BindingSource,这样当你更新Collection中的项目时,它就会自动在网格中更新
  2. 您还需要确保您的BusinessObject/DomainModel/CollectionItem实现INotifyPropertyChanged,以便当您更新业务层中的值时,它会在网格中自动更新
  3. 当你点击创建/更新按钮,它将加载现有的值(如果更新,否则新的默认值)到行编辑模板控制
  4. 当点击Submit Create时,它将创建新的BusinessObject并将其添加到您的Collection中。当您的集合绑定到网格时,网格将自动刷新。
  5. 与提交更新相同,如果你更新集合中相同的引用对象,任何更新都应该反映在网格

你可能需要修复你的标签,因为你是在谈论ASP而不是WinForms。

我正在使用Telerik的网格与ASP MVC 2 atm。帮助你序列化你的数据到ViewModel和你的控制器与ViewModel工作(不必乱与请求。参数)。

参见Telerik Grid和ASP MVC