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
更新:为了让创建/更新工作,你通常使用gridrowedittemplate控件(这基本上是另一个WinForm,它允许你做额外的验证和创建/更新现有的值)。弹跳学有个好主意。
- 你需要确保你在网格中使用了BindingSource,这样当你更新Collection中的项目时,它就会自动在网格中更新
- 您还需要确保您的BusinessObject/DomainModel/CollectionItem实现INotifyPropertyChanged,以便当您更新业务层中的值时,它会在网格中自动更新
- 当你点击创建/更新按钮,它将加载现有的值(如果更新,否则新的默认值)到行编辑模板控制 当点击Submit Create时,它将创建新的BusinessObject并将其添加到您的Collection中。当您的集合绑定到网格时,网格将自动刷新。
- 与提交更新相同,如果你更新集合中相同的引用对象,任何更新都应该反映在网格
你可能需要修复你的标签,因为你是在谈论ASP而不是WinForms。
我正在使用Telerik的网格与ASP MVC 2 atm。帮助你序列化你的数据到ViewModel和你的控制器与ViewModel工作(不必乱与请求。参数)。
参见Telerik Grid和ASP MVC