PDA

View Full Version : سوال: مشکل در ذخیره تغییرات درون gridview بعد از ترک سطر مورد نظر



moshavermojarab
دوشنبه 09 اسفند 1395, 15: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);

ابتدا تابع را صدا زده ولی مقادیر وارد شده در سلول های تغییر داده شده را خالی می گذارد. انگار که مقادیر جدید را نمی تواند تشخیص دهد.
لطفا کمکم کنید

moshavermojarab
دوشنبه 09 اسفند 1395, 16:03 عصر
هیچ کس نمی تواند راه حلی برای ذخیره داده سطر بعد از ترک آن را درون gridview بدهد؟ لطفا

Mahmoud.Afrad
سه شنبه 10 اسفند 1395, 01:43 صبح
کد متد update_one_record_moein را هم قرار بدید.

moshavermojarab
شنبه 14 اسفند 1395, 08:55 صبح
public void update_one_record_moein(string code_co,string id_kol, string code_atf, string id_moein, string code_moein,string name_moein, string dbname)
{
string result="";
string[] paramname = { "@code_comp", "@atf_moein", "@code_atf", "@id_kol", "@id_moein", "@name_moein", "@result" };
string[] paramvalue = {code_co,code_moein,code_atf,id_kol,id_moein,name_ moein,result };
base.Doproc(paramname, paramvalue, "update_insert_moein", dbname);
if (base.erroren != null)
flag = false;
}

مشکل از اینحا نیست من مشکلم اینه که در زمانی که تغییر در کل سطر تمام شد از سطر خارج شد این اطلاعات را اگر در جدول نیست درون جدول درج نماید و اگر هست آن را آپدیت کند درون تابع بالا من توسط یک پروسیجر انجام دادم ان قسمت در خود sql تست کردم درست جواب داده مشکل الان من فقط با gridview است

hamid_hr
شنبه 14 اسفند 1395, 09:13 صبح
متد rowLeave رو برای گرید ویو هندل کن. وقتی یک سطر رو ترک کنی این متد اجرا میشه

moshavermojarab
شنبه 14 اسفند 1395, 09:54 صبح
متد rowLeave رو برای گرید ویو هندل کن. وقتی یک سطر رو ترک کنی این متد اجرا میشه
گذاشتم در کدی که اولین بار گذاشتم می تونید مشاهده کنید من با دیباگ کردن می بینم که داخل rowleave میاد تابع آپدیت خودم را هم اجرا می کنه ولی مقدار آخرین سلول آن سطر را تشخیص نمی دهد و null می زنه این مشکل را باید چی کار کنم؟

moshavermojarab
شنبه 14 اسفند 1395, 10:04 صبح
ممنون پیداش کردم باید به جای value از EditedFormattedValue استفاده کنم برای گرفتن مقادیر تغییر کرده در سلول ها