C# Visual Studio:如何使用 LINQ 从 Edit with DataGridView 更新数据库?
C# Visual Studio: How do I update a DB from Edit with DataGridView using LINQ?
我有一个带有 DataGridView 的 WinForms 表单 window。它使用 Linq 从 SQL Server Express 数据库中提取数据并将其正确显示在 DataGridView 列中。我在属性中设置它以允许编辑。当我在运行时编辑和更改字段时,如果我指定一个列名,它只会更新数据库。这不能很好地工作,因为我需要它来更新我编辑的列,而不是硬编码的列。它需要是动态的。请参阅网站旁边的评论。???我可以从 site.whatever 中手动选择一个列名,但这不是我想要的。我希望能够从我设置的字符串中执行 Site.columnname。
我看到其他加载 and/or 使用数据编辑 DataGridView 的示例,但这些示例未使用 LINQ。
我的表单加载代码:
public partial class EditImage : Form
{
SQL sqlLink = new SQL();
CustomMessageBox msg = new CustomMessageBox();
public EditImage()
{
InitializeComponent();
}
private void EditImage_Load(object sender, EventArgs e)
{
dgImageView.DataSource = sqlLink.getImageList();
dgImageView.AutoResizeColumns();
dgImageView.AutoResizeRows();
}
private void dgImageView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
int rid = e.RowIndex;
int dbrid = rid + 1;
int cid = e.ColumnIndex;
string change = dgImageView[cid, rid].Value.ToString();
string columname = dgImageView[cid, rid].OwningColumn.Name;
using (var dc = new DbLink())
{
var site = (from img in dc.images where img.id == dbrid select img).SingleOrDefault();
if (site != null)
{
try
{
site.??? = change;
dc.SubmitChanges();
dgImageView.EndEdit();
}
catch (Exception ex)
{
msg.Text("Error", ex.ToString(), MessageBoxButtons.OK);
}
}
}
}
来自 SQL class 的代码以检索数据源:
public IQueryable getImageList()
{
return selectImageList();
}
和
private IQueryable selectImageList()
{
DbLink dbl = new DbLink();
image tl = new image();
var results = from imgs in dbl.images
select imgs;
return results;
}
dbml 文件截图:
你可以尝试反思:
var changedColumn = typeof(image).GetProperty(columnName);
changedColumn.SetValue(site,change);
我有一个带有 DataGridView 的 WinForms 表单 window。它使用 Linq 从 SQL Server Express 数据库中提取数据并将其正确显示在 DataGridView 列中。我在属性中设置它以允许编辑。当我在运行时编辑和更改字段时,如果我指定一个列名,它只会更新数据库。这不能很好地工作,因为我需要它来更新我编辑的列,而不是硬编码的列。它需要是动态的。请参阅网站旁边的评论。???我可以从 site.whatever 中手动选择一个列名,但这不是我想要的。我希望能够从我设置的字符串中执行 Site.columnname。
我看到其他加载 and/or 使用数据编辑 DataGridView 的示例,但这些示例未使用 LINQ。
我的表单加载代码:
public partial class EditImage : Form
{
SQL sqlLink = new SQL();
CustomMessageBox msg = new CustomMessageBox();
public EditImage()
{
InitializeComponent();
}
private void EditImage_Load(object sender, EventArgs e)
{
dgImageView.DataSource = sqlLink.getImageList();
dgImageView.AutoResizeColumns();
dgImageView.AutoResizeRows();
}
private void dgImageView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
int rid = e.RowIndex;
int dbrid = rid + 1;
int cid = e.ColumnIndex;
string change = dgImageView[cid, rid].Value.ToString();
string columname = dgImageView[cid, rid].OwningColumn.Name;
using (var dc = new DbLink())
{
var site = (from img in dc.images where img.id == dbrid select img).SingleOrDefault();
if (site != null)
{
try
{
site.??? = change;
dc.SubmitChanges();
dgImageView.EndEdit();
}
catch (Exception ex)
{
msg.Text("Error", ex.ToString(), MessageBoxButtons.OK);
}
}
}
}
来自 SQL class 的代码以检索数据源:
public IQueryable getImageList()
{
return selectImageList();
}
和
private IQueryable selectImageList()
{
DbLink dbl = new DbLink();
image tl = new image();
var results = from imgs in dbl.images
select imgs;
return results;
}
dbml 文件截图:
你可以尝试反思:
var changedColumn = typeof(image).GetProperty(columnName);
changedColumn.SetValue(site,change);