PDA

View Full Version : سوال: مشکل در رفرش شدن صفحه



masoud.a
سه شنبه 03 اردیبهشت 1392, 15:42 عصر
سلام
تو برنامه ام دو تا فرم دارم.در Form1 دکمه ای هست که بازدنش به Form2 منتقل میشه و در اونجا کارای مربوط به insert انجام میشه.در فرم اولی یه DataGridView دارم که کاربرای موجود رو از db میخونه و نشون میده.برای نمایش کل کاربران یه تابع نوشتم که در قسمت command text این کد هست :
cmd.CommandText = "select * from tbl_users";
حالا سوالم:وقتی دکمه انتقال به فرم دومی زده میشه،اگه فرم اولی رو close کنم بعد از insert وقتی برمیگردم به فرم اولی کاربر جدید که insert شده رو نشون میده ولی اگه Form1 رو close نکنم کاربر جدید رو نشون نمیده.تابع نمایش کلیه کاربران را در Form_load هم فراخوانی میکنم.
میشه راهنمائی کنید چیکار باید بکنم.خیلی ممنون

danialafshari
سه شنبه 03 اردیبهشت 1392, 16:01 عصر
سلام
با استفاده از dialogResult یک پیام ارسال کنید به فرم اول که بعد از تغییر فرم رو رفرش کنه
موفق باشی

masoud.a
سه شنبه 03 اردیبهشت 1392, 16:50 عصر
یعنی در قسمت Form_load فرم اولی بنویسمش؟نمیخوام با اجرای برنامه DialogResult بالابیاد.
حالا یه سوال دیگه:به جای فرم جدید چطور یه Dialog جدید اضافه کنم؟

amirzandi
سه شنبه 03 اردیبهشت 1392, 16:53 عصر
شما قطعه کدی که با آن گرید را Databind می کنید در Public void قرار دهید. وقتی در فرم 2 عملیات Insert را انجام دادید این public void را call کنید که مجددا گرید در فرم 1 را databind کند.

masoud.a
سه شنبه 03 اردیبهشت 1392, 23:37 عصر
شما قطعه کدی که با آن گرید را Databind می کنید در Public void قرار دهید. وقتی در فرم 2 عملیات Insert را انجام دادید این public void را call کنید که مجددا گرید در فرم 1 را databind کند.
من این کار رو انجام داده بودم ولی نشد.اون تابع وقتی فراخوانی میشه (با توابعی مثل Delete که در فرم 1 انجام میشه) پارامتر های insert شده نشون داده میشن.یعنی در فرم2 insert انجام میشه اما وقتی با یه دکمه،فرم2 بسته میشه اطلاعات جدید به لیست کاربرام در فرم1 اضافه نمیشن.
از Form1 یه نمونه میساختم و با اون فراخوانیش میکردم(بعد از کد insert).ولی باز هم اثری نداشت.این کد برای استفاده از یه فرم دیگه درسته؟List تابعیه که در فرم1 اطلاعات را در گرید پر میکنه

Form1 f1=new Form1;
f1.List();

danialafshari
سه شنبه 03 اردیبهشت 1392, 23:42 عصر
کد خیلی راحتی داره
فردا صبح براتون قرارش میدم

amirzandi
چهارشنبه 04 اردیبهشت 1392, 07:08 صبح
من این کار رو انجام داده بودم ولی نشد.اون تابع وقتی فراخوانی میشه (با توابعی مثل Delete که در فرم 1 انجام میشه) پارامتر های insert شده نشون داده میشن.یعنی در فرم2 insert انجام میشه اما وقتی با یه دکمه،فرم2 بسته میشه اطلاعات جدید به لیست کاربرام در فرم1 اضافه نمیشن.
از Form1 یه نمونه میساختم و با اون فراخوانیش میکردم(بعد از کد insert).ولی باز هم اثری نداشت.این کد برای استفاده از یه فرم دیگه درسته؟List تابعیه که در فرم1 اطلاعات را در گرید پر میکنه

Form1 f1=new Form1;
f1.List();


وقتی فرم1 باز هست دیگه new instance نسازید ازش

danialafshari
چهارشنبه 04 اردیبهشت 1392, 09:17 صبح
کد خیلی راحتی داره
فردا صبح براتون قرارش میدم

سلام
ابتدا در فرم اصلی و روی دکمه ای که فرم رو فراخوانی می کنی این کد رو با تغییر به شکل برنامه خودتون قرار بدید
var update = new frmEdit();
if (update.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Show_Load(null, null);
}
به جای frmEdit نام فرم خودتون رو بزارید
حالا به فرم 2 یا همون فرم ویرایش یا اد رفته و بعد از عمل آپدیت یا ذخیره سازی و... کد زیر رو قرار دهید:
DialogResult = System.Windows.Forms.DialogResult.OK;
با این کار به صورت اتوماتیک بعد از ویرایش یا اد و یا تغییر در دیتابیس سریعا رفرش میشه و اطلاعات نشون داده میشه
موفق باشید

masoud.a
چهارشنبه 04 اردیبهشت 1392, 10:24 صبح
سلام
ابتدا در فرم اصلی و روی دکمه ای که فرم رو فراخوانی می کنی این کد رو با تغییر به شکل برنامه خودتون قرار بدید
var update = new frmEdit();
if (update.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Show_Load(null, null);
}
به جای frmEdit نام فرم خودتون رو بزارید
حالا به فرم 2 یا همون فرم ویرایش یا اد رفته و بعد از عمل آپدیت یا ذخیره سازی و... کد زیر رو قرار دهید:
DialogResult = System.Windows.Forms.DialogResult.OK;
با این کار به صورت اتوماتیک بعد از ویرایش یا اد و یا تغییر در دیتابیس سریعا رفرش میشه و اطلاعات نشون داده میشه
موفق باشید
خیلی ممنون.فقط میشه بگید Show_Load چیه؟تابع نمایش اطلاعات در گریده؟
اون قسمت از کد رو نفهمیدم

danialafshari
چهارشنبه 04 اردیبهشت 1392, 10:51 صبح
خیلی ممنون.فقط میشه بگید Show_Load چیه؟تابع نمایش اطلاعات در گریده؟
اون قسمت از کد رو نفهمیدم

سلام
این کد رویداد form_load رو دوباره بارگذاری میشه و هر کدی که در form_load هست مجددا بارگذاری میشه که معمولا کد select هم در فرم load قرار دارد
موفق باشی

masoud.a
جمعه 06 اردیبهشت 1392, 22:35 عصر
سلام
این کد رویداد form_load رو دوباره بارگذاری میشه و هر کدی که در form_load هست مجددا بارگذاری میشه که معمولا کد select هم در فرم load قرار دارد
موفق باشی
مرسی از پاسختون.صفحه رفرش شده بالا میاد یعنی بعد از اینکه insert شد فیلد جدید به لیست صفحه اضافه میشه ولی صفحه قبلی بسته نمیشه.چطوری اون صفحه رو close کنم؟ممنون میشم یه بار دیگه کمکم کنید

danialafshari
جمعه 06 اردیبهشت 1392, 23:11 عصر
سلام
کدوم صفحه؟
this.Close();
یا
Application.OpenForms["Form2"].Close();
به جای Form2 ام فرم خودتون رو بنویسید

masoud.a
شنبه 07 اردیبهشت 1392, 00:01 صبح
سلام
کدوم صفحه؟
this.Close();
یا
Application.OpenForms["Form2"].Close();
به جای Form2 ام فرم خودتون رو بنویسید

وقتی دکمه insert رو زدم این کد بعد از دستورات مربوط به insert باید صدا زده بشه؟
این کد هردوتا فرم رو میبنده. یعنی هم فرم لیست قبلی هم فرمی که فیلد جدید به لیست اضافه شده :
Application.OpenForms["Form2"].Close();

esafb52
شنبه 07 اردیبهشت 1392, 00:14 صبح
دوست عزیز با اجازه جناب افشاری عزیز
برای بستن یه فرم

this.Close();

همین کافیه

masoud.a
شنبه 07 اردیبهشت 1392, 00:53 صبح
فک کنم منظورمو درست نگفتم.من تو فرم2 میخوام با زدن دکمه insert فرم1 هم داده جدید بگیره و تو لیستش نشون بده هم فرم1 قبلی بسته شه.آقای افشاری کمک کردند و قسمت اول حل شد.فقط مونده بستن فرم1 قبلی

دوست عزیز با اجازه جناب افشاری عزیز
برای بستن یه فرم

this.Close();

همین کافیه
با این کار فرم2 فقط بسته میشه

danialafshari
شنبه 07 اردیبهشت 1392, 15:58 عصر
Application.OpenForms["Form1"].Close();

masoud.a
شنبه 07 اردیبهشت 1392, 23:26 عصر
آقای افشاری دستتون درد نکنه،همون کدی که قبلا نوشته بودید با کمی تغییر مشکلم رو حل کرد.خیلی ممنون