C# 如何使用LINQ to SQL在DataGridView中编辑数据库记录?
我离这件事很近,但我需要一点帮助。我有一个简单的WinForms应用程序,它使用LINQ to SQL从数据库中获取需要检查的数据,并将其填充到C# 如何使用LINQ to SQL在DataGridView中编辑数据库记录?,c#,linq-to-sql,datagridview,C#,Linq To Sql,Datagridview,我离这件事很近,但我需要一点帮助。我有一个简单的WinForms应用程序,它使用LINQ to SQL从数据库中获取需要检查的数据,并将其填充到DataGridView中。这一部分工作得很好,但我似乎无法建立的联系是,当情况发生变化时,如何将数据恢复到数据库中 以下是我目前掌握的情况: db = new SiteDataDataContext(); src = new BindingSource(); src.DataSource = GetSitesPendingApproval(); //
DataGridView
中。这一部分工作得很好,但我似乎无法建立的联系是,当情况发生变化时,如何将数据恢复到数据库中
以下是我目前掌握的情况:
db = new SiteDataDataContext();
src = new BindingSource();
src.DataSource = GetSitesPendingApproval(); // Returns IQueryable<Site>.
dataGridView1.DataSource = src;
dataGridView1.AllowUserToDeleteRows = true;
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;
db=newsitedatacontext();
src=newbindingsource();
src.DataSource=GetSitesPendingApproval();//返回IQueryable。
dataGridView1.DataSource=src;
dataGridView1.AllowUserToDeleteRows=true;
dataGridView1.EditMode=DataGridViewEditMode.Editonner;
我希望能够采取两项行动:
布尔值的复选框时,我希望将更改发送到数据库
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;
}
}
}
}
如果删除失败,您也可能会提供一条错误消息,但如何执行将取决于您的应用程序。我不太希望这样做(我想我可以通过数据绑定免费获得更多),但这样就可以了。谢谢。对于WebForms,您可以绑定到一个LinqDataSource,它使您能够更轻松地执行删除操作,尽管我怀疑它的功能与后端的示例类似。我没有看到WinForms的模拟。您有“从行到列获取id”。。。这是如何做到的?@Nathanmakaskle检查行并从包含该行的列中提取id。您必须确保将其包含在网格视图中的(可能是隐藏的)列中。我是否可以从发送方强制转换的行对象中执行此操作?row对象在intellisense上有许多选项(方法和属性),但我没有看到任何可以显示或帮助我获取要更新的行ID的内容。