私はDataGridViewでフォームWinFormsフォームウィンドウを持っています。 Linqを使用してSQL Server Expressデータベースからデータを取得し、DataGridView列に適切に表示します。私はプロパティを編集できるように設定しました。実行時にフィールドを編集して変更すると、列名を1つ指定するとデータベースが更新されます。これは、ハードコーディングされたものではなく、編集した列を更新する必要があるため、うまく機能しません。それは動的である必要があります。サイトの隣のコメントを参照してください。???私はsite.whateverから列名を手動で選択できますが、それは私が望むものではありません。私は設定した文字列からSite.columnnameを実行できるようにしたい。C#Visual Studio:LINQを使用してDataGridViewで編集からDBを更新するにはどうすればよいですか?
DataGridViewにデータをロードまたは編集する他の例がありますが、これらの例ではLINQを使用していません。
マイフォームの負荷コード:SQLクラスから
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);
}
}
}
}
コードを取得するためのデータソース:
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ファイルのスクリーンショット: