簡體   English   中英

如何使用LINQ to SQL在DataGridView中編輯數據庫記錄?

[英]How Do I Edit Database Records In A DataGridView Using LINQ to SQL?

我離這很近,但是我需要一點幫助。 我有一個簡單的WinForms應用程序,該應用程序使用LINQ to SQL來獲取需要從數據庫中檢查的數據並將其填充到DataGridView 那部分效果很好,但是我似乎無法建立的聯系是,當事情發生變化時如何將數據返回數據庫。

這是我到目前為止的內容:

db = new SiteDataDataContext();
src = new BindingSource();
src.DataSource = GetSitesPendingApproval(); // Returns IQueryable<Site>.
dataGridView1.DataSource = src;
dataGridView1.AllowUserToDeleteRows = true;
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;

我要執行兩項操作:

  1. checkboxbooleanIsActiveDataGridView.Columns [7])被選中/未選中我想改變要被發送到數據庫中。
  2. 當從datagridview刪除記錄時,我希望它也從數據庫中刪除。

我顯然缺少某種綁定,提交,合並,追加或單元格更改的事件處理程序,但是我無法弄清楚連接以將更改發送回去。 如果只是簡單地進行所有更改,然后單擊某種“提交”按鈕將其全部發送回去,那也很好。

您是否嘗試為UserDeletingRow事件添加事件處理程序,該事件處理程序使用行上的ID從數據庫中刪除行?

private void DataGrid_UserDeletingRow(object sender,
                                           DataGridCommandEventArgs e)
{
    TableCell itemCell = e.Item.Cells[0]; // assumes id is in column 0

    int id = int.Parse(item.Text); // assumes it's non-null

    using (var dc = new SiteDataDataContext())
    {
         var site = dc.Sites.Where(s => s.ID == id).SingleOrDefault();

         if (site != null)
         {
             try
             {
                dc.Sites.DeleteOnSubmit( site );
                dc.SubmitChanges();
                dataGridView1.Bind();
             }
             catch (SqlException)
             {
                e.Cancel = true;
             }
         }
     }
}

如果刪除失敗,您也可能會提供一條錯誤消息,但是如何執行將取決於您的應用程序。

暫無
暫無

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

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