[英]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;
我要执行两项操作:
checkbox
为boolean
值IsActive
( DataGridView.Columns
[7])被选中/未选中我想改变要被发送到数据库中。 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.