PDA

View Full Version : مشکل با بروز نشدن به موقع datagridview



farhad.k.t
چهارشنبه 05 شهریور 1393, 20:18 عصر
سلام دوستان
من تازه با Linq آشنا شدم و پروژه ای نوشتم که یک فرم نمایش و یک فرم ویرایش داره و وقتی Update_sp رو در فرم ویرایش اجرا می کنم و datacontext.submitchanges() را اجرا می کنم فرم ویرایش بسته می شه و سپس query show اجرا میشه و در dgv ریخته می شه...
ولی هیچ رکوردی update نمیشه تا فرم نمایش رو ببندم و دوباره باز کنم...
خودم فکر میکنم مشکل مربوط به قفل شدن db هنگام عملیات باشه ولی نمی دونم چطوری درستش کنم؟...
کد ها را برای بررسی بیشتر براتون می گذارم لطفا راهنمایی کنید...

کد مربوط به btn_edit در فرم نمایش:
editbookfrm frm = new editbookfrm();
frm.Text = "ویرایش کتاب";
frm.radif= Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value);
frm.title = dataGridView1.CurrentRow.Cells[1].Value.ToString();
frm.author = dataGridView1.CurrentRow.Cells[2].Value.ToString();
frm.translator =Convert.ToString( dataGridView1.CurrentRow.Cells[3].Value);
frm.subject = dataGridView1.CurrentRow.Cells[4].Value.ToString();
frm.publicator = dataGridView1.CurrentRow.Cells[5].Value.ToString();
frm.publicationyear = dataGridView1.CurrentRow.Cells[6].Value.ToString();
frm.available = dataGridView1.CurrentRow.Cells[7].Value.ToString();
frm.description = Convert.ToString(dataGridView1.CurrentRow.Cells[8].Value);
frm.ShowDialog();
bookshowfrm_Load(sender, e);

کد مربوط به btn_save در فرم ویرایش:

dc.sp_tblbooks_update(radif, txttitle.Text, txtauthor.Text, txttranslator.Text, txtsubject.Text, txtpublicator.Text, txtpublicatonyear.Text, bool.Parse(cmbavailable.Text), txtdescription.Text);
dc.SubmitChanges();
this.Close();

parvizwpf
پنج شنبه 06 شهریور 1393, 09:00 صبح
شما باید بعد از ویرایش مجددا کدهای بایند گرید ویو رو فراخوانی کنید. اینطوری نیست که همه چی کانکت باشه و خودکار تغییر کنه. باید گرید دوباره بایند بشه.

farhad.k.t
پنج شنبه 06 شهریور 1393, 16:35 عصر
از راهنمایی شما سپاس گذارم ...
من dgv را بایند نکرده بودم و DataSource را برابر linqquey قرار می دادم... ولی dgv را که بایند کردم درست شد...

Mojtaba0
پنج شنبه 13 شهریور 1393, 20:55 عصر
سلام
منم همین مشکل رو دارم و از دیتاسورس استفاده کردم که انگار مشکل همینه.
حالا سوال:
میشه توضیح بدین که dgview را بایند چطور میشه کرد؟(منظور از بایند چیه؟!)

parvizwpf
جمعه 14 شهریور 1393, 20:27 عصر
ببنینید کافیه کد بایند رو دوباره بنویسید

farhad.k.t
یک شنبه 16 شهریور 1393, 14:42 عصر
ببینید دوست عزیز منظور از بایند کردن dgv همان متصل کردن آن به منبع داده با datasource است که می توانید به صورت ویزاردی یا با کد انجام دهید...

کد:
DGV.DataSource = dt;
که datasource می تواند یک datatableیا یک select query با Linq باشد ...که اگر از linq استفاده می کنید،باید قبل از نوشتن query یک نمونه جدید ازdatacontext مربوطه بسازید وگرنه با مشکل من مواجه می شوید...

به صورت ویزاردی :
پس از اضافه کردن dgv منویdatagridview tasks را از بالا سمت راست dgv باز کنید و سپس از منوی choose datasource منبع داده دلخواهتان را انتخاب کنید...که در صورتی که از sqlserver یا oracle و... استفاده می کنید باید روی گزینه ی add project datasource کلیک کرده و db مربوطه را معین کنید و dgv را به جدول دلخواه bind کنید...و سپس ستون های جدول به dgv اضافه خواهد شد...

Mojtaba0
یک شنبه 16 شهریور 1393, 23:35 عصر
ببینید دوست عزیز منظور از بایند کردن dgv همان متصل کردن آن به منبع داده با datasource است که می توانید به صورت ویزاردی یا با کد انجام دهید...

کد:
DGV.DataSource = dt;
که datasource می تواند یک datatableیا یک select query با Linq باشد ...که اگر از linq استفاده می کنید،باید قبل از نوشتن query یک نمونه جدید ازdatacontext مربوطه بسازید وگرنه با مشکل من مواجه می شوید...

به صورت ویزاردی :
پس از اضافه کردن dgv منویdatagridview tasks را از بالا سمت راست dgv باز کنید و سپس از منوی choose datasource منبع داده دلخواهتان را انتخاب کنید...که در صورتی که از sqlserver یا oracle و... استفاده می کنید باید روی گزینه ی add project datasource کلیک کرده و db مربوطه را معین کنید و dgv را به جدول دلخواه bind کنید...و سپس ستون های جدول به dgv اضافه خواهد شد...

ممنون از پاسختون.

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

فعلا برای این مشکل از رویداد Activated فرم اول مجددا دیتاست رو فراخوانی کردم یعنی کد زیر:


private void frmMain_Activated(object sender, EventArgs e)
{
var q = db.tblPersons.Select(p => p);
dgReport.DataSource = q;
}


123181

البته فکر کنم راه بهتری هم داشته باشه که نمیدونم من :متفکر:

ابوالفضل عباسی
دوشنبه 17 شهریور 1393, 15:20 عصر
اگر راه جدیدی دوستان در این تاپیک بگذارند ممنون می شویم من هم همین مشکل رو دارم.

parvizwpf
دوشنبه 17 شهریور 1393, 16:46 عصر
شما میتونید حتی بعد از اجرا شدن اون در فرم دیگه یک متغیر یا چیز دیگه ای رو سراسری در برنامه تعریف کنید و به اون اطلاع بدید که آیا باید بایند مجدد انجام بشه یا خیر.

ابوالفضل عباسی
دوشنبه 17 شهریور 1393, 17:14 عصر
Thank you very much parvizwpf (http://barnamenevis.org/member.php?243106-parvizwpf)

parvizwpf
دوشنبه 17 شهریور 1393, 17:34 عصر
حل شد یا خیر؟

ابوالفضل عباسی
سه شنبه 18 شهریور 1393, 09:10 صبح
حل شد دستت درد نکنه