繁体   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