У меня есть окно формы формы WinForms с DataGridView. Он извлекает данные из базы данных SQL Server Express с помощью Linq и правильно отображает их в столбцах DataGridView. Я установил его в свойствах, чтобы разрешить редактирование. Когда я редактирую и изменяю поле во время выполнения, он будет обновлять базу данных только в том случае, если я укажу одно имя столбца. Это не работает, потому что мне нужно обновить отредактированный столбец, а не один жесткий код. Он должен быть динамичным. См. Комментарии рядом с сайтом. ??? Я могу выбрать имя столбца вручную с сайта. Что бы это ни было, но это не то, что я хочу. Я хочу, чтобы иметь имя Site.column из строки, которую я установил.C# Visual Studio: как мне обновить базу данных с помощью DataGridView с помощью LINQ?
Я вижу другие примеры загрузки и/или редактирования 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 для извлечения DataSource:
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: