簡體   English   中英

C# Winform Datagrid CRUD

[英]C# Winform Datagrid CRUD

我使用 3 層應用程序。 我已經創建了數據訪問層和業務層。 如何將它與視圖層上的 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());
            }

        }
    }

我已經完成了讀取和刪除,但沒有完成創建和更新。

我如何將這些創建和更新連接到我的業務層,順便說一下,我如何檢索新行值或更改行值。

這些我在 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 中做到這一點?

提前謝謝你

更新:為了讓創建/更新工作,您通常使用 Grid RowEditTemplate 控件(它基本上是另一個 WinForm,它允許您進行額外的驗證和創建/更新現有值)。 基礎設施取得了不錯的成績。

  1. 您需要確保在 Grid 中使用 BindingSource,這樣當您更新 Collection 中的項目時,它會自動在 Grid 中更新
  2. 您還需要確保您的 BusinessObject/DomainModel/CollectionItem 實現 INotifyPropertyChanged,以便在您更新業務層中的值時,它會自動在網格中更新
  3. 當您單擊“創建/更新”按鈕時,它會將現有值(如果更新,否則為新的默認值)加載到行編輯模板控件中
  4. 當點擊提交創建時,它將創建新的 BusinessObject 並將其添加到您的集合中。 當您的集合綁定到網格時,網格將自動刷新。
  5. 與提交更新相同,如果您更新集合中的相同引用 object,任何更新都應反映在網格中

您可能需要修復您的標簽,因為您在談論 ASP 而不是 WinForms。

我將 Telerik 的 Grid 與 ASP MVC 2 atm 一起使用。 有助於將數據序列化到 ViewModel 中,並且您可以在控制器中使用 ViewModel(大多數時候不必亂用 Request.Params)。

請參閱 Telerik 網格ASP MVC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM