moshavermojarab
دوشنبه 09 اسفند 1395, 16:30 عصر
سلام
من کدی نوشتم که ابتدا datagridview را با استفاده از datatable پر می کند. بعد از آن کاربر می تواند داده های جدید در datagridview وارد نماید یا داده های قبلی خوانده شده از جدول را تغییر بدهد و همچنین این داده ها مستقیم همان لحظه درون جدول نوشته شود.
کد زیر کدهایی هستند که برای اضافه کردن و تغییر دادن داده ها درون datagridview را نشان می دهد.
private void dgv_moein_RowEnter(object sender, DataGridViewCellEventArgs e)
{
if (dgv_moein.IsCurrentRowDirty == true)
{
dgv_moein.CommitEdit(DataGridViewDataErrorContexts .Commit);
for (int i = 0; i < dgv_moein.Rows[e.RowIndex].Cells.Count; i++)
{
dgv_moein[i, e.RowIndex].Style.BackColor = Color.Yellow;
}
}
}
private void dgv_moein_RowLeave(object sender, DataGridViewCellEventArgs e)
{
int index_kol = dgv_kol.CurrentCell.RowIndex;
int index_moein = dgv_moein.CurrentCell.RowIndex;
if (dgv_moein.IsCurrentRowDirty == true)
{
dgv_moein.CommitEdit(DataGridViewDataErrorContexts .Commit);
com.update_one_record_moein(code_comp, dgv_kol.Rows[index_kol].Cells[0].Value.ToString(), code_atf, dgv_moein.Rows[index_moein].Cells[2].Value.ToString(), dgv_moein.Rows[index_moein].Cells[0].Value.ToString(), dgv_moein.Rows[index_moein].Cells[1].Value.ToString(), "moeindb_" + salmali);
for (int i = 0; i < dgv_moein.Rows[e.RowIndex].Cells.Count; i++)
{
dgv_moein[i, e.RowIndex].Style.BackColor = Color.Empty;
}
}
dgv_moein.Invalidate();
}
مشکل من این است که درون خط
com.update_one_record_moein(code_comp, dgv_kol.Rows[index_kol].Cells[0].Value.ToString(), code_atf, dgv_moein.Rows[index_moein].Cells[2].Value.ToString(), dgv_moein.Rows[index_moein].Cells[0].Value.ToString(), dgv_moein.Rows[index_moein].Cells[1].Value.ToString(), "moeindb_" + salmali);
ابتدا تابع را صدا زده ولی مقادیر وارد شده در سلول های تغییر داده شده را خالی می گذارد. انگار که مقادیر جدید را نمی تواند تشخیص دهد.
لطفا کمکم کنید
من کدی نوشتم که ابتدا datagridview را با استفاده از datatable پر می کند. بعد از آن کاربر می تواند داده های جدید در datagridview وارد نماید یا داده های قبلی خوانده شده از جدول را تغییر بدهد و همچنین این داده ها مستقیم همان لحظه درون جدول نوشته شود.
کد زیر کدهایی هستند که برای اضافه کردن و تغییر دادن داده ها درون datagridview را نشان می دهد.
private void dgv_moein_RowEnter(object sender, DataGridViewCellEventArgs e)
{
if (dgv_moein.IsCurrentRowDirty == true)
{
dgv_moein.CommitEdit(DataGridViewDataErrorContexts .Commit);
for (int i = 0; i < dgv_moein.Rows[e.RowIndex].Cells.Count; i++)
{
dgv_moein[i, e.RowIndex].Style.BackColor = Color.Yellow;
}
}
}
private void dgv_moein_RowLeave(object sender, DataGridViewCellEventArgs e)
{
int index_kol = dgv_kol.CurrentCell.RowIndex;
int index_moein = dgv_moein.CurrentCell.RowIndex;
if (dgv_moein.IsCurrentRowDirty == true)
{
dgv_moein.CommitEdit(DataGridViewDataErrorContexts .Commit);
com.update_one_record_moein(code_comp, dgv_kol.Rows[index_kol].Cells[0].Value.ToString(), code_atf, dgv_moein.Rows[index_moein].Cells[2].Value.ToString(), dgv_moein.Rows[index_moein].Cells[0].Value.ToString(), dgv_moein.Rows[index_moein].Cells[1].Value.ToString(), "moeindb_" + salmali);
for (int i = 0; i < dgv_moein.Rows[e.RowIndex].Cells.Count; i++)
{
dgv_moein[i, e.RowIndex].Style.BackColor = Color.Empty;
}
}
dgv_moein.Invalidate();
}
مشکل من این است که درون خط
com.update_one_record_moein(code_comp, dgv_kol.Rows[index_kol].Cells[0].Value.ToString(), code_atf, dgv_moein.Rows[index_moein].Cells[2].Value.ToString(), dgv_moein.Rows[index_moein].Cells[0].Value.ToString(), dgv_moein.Rows[index_moein].Cells[1].Value.ToString(), "moeindb_" + salmali);
ابتدا تابع را صدا زده ولی مقادیر وارد شده در سلول های تغییر داده شده را خالی می گذارد. انگار که مقادیر جدید را نمی تواند تشخیص دهد.
لطفا کمکم کنید