PDA

View Full Version : حرفه ای: بروز کردن datagridview



alex750
یک شنبه 22 دی 1392, 18:03 عصر
با سلام
من یک فرم دارم که توش یک datagrid وجود داره و اطلاعات یک جدول رو نشون میده یک کلید برای اضافه کردن گذاشتم وقتی کلید می کنی یک فرم جدید باز میشه من می خوام بعد از اضافه کردن یک رکورد جدید و بستن این فرم اطلاعات رکورد جدید بلافاصله تو datagrid نشون داده بشه
راهنمایی کنید

sagggad
یک شنبه 22 دی 1392, 18:04 عصر
با سلام
دیتاگرید شما به صورت ویزاردی به دیتابیس بایند نشده؟؟

alex750
یک شنبه 22 دی 1392, 18:06 عصر
سلام چرا به صورت ویزاردی بایند شده

sagggad
یک شنبه 22 دی 1392, 18:08 عصر
خوب در این صورت اگر تغییری در بانک حاصل بشه و ذخیره شه خود به خود در گریدویو نمایشه داده میشه
شما میخواید در بانک ذخیره نشه و نمایش داده شه؟؟

m.ghorbani2000
یک شنبه 22 دی 1392, 18:20 عصر
خوب در این صورت اگر تغییری در بانک حاصل بشه و ذخیره شه خود به خود در گریدویو نمایشه داده میشه
شما میخواید در بانک ذخیره نشه و نمایش داده شه؟؟
ببین گرید ویو را با حلقه for با while پرکن بعد به گرید ویو رکور اضافه کن این طوری به مشکل بر نمی خوری

sagggad
یک شنبه 22 دی 1392, 18:22 عصر
ببین گرید ویو را با حلقه for با while پرکن بعد به گرید ویو رکور اضافه کن این طوری به مشکل بر نمی خوری
آره اما ایشون نمیگه که میخواد ذخیره شه در بانک یانه؟؟

NasimBamdad
یک شنبه 22 دی 1392, 18:22 عصر
پیشنهاد می کنم که هیچ وقت از WIZARD ها استفاده نکنید

این Wizard ها برای عموم مردم و کار ها ساخته شده . پس مختص شما نیست !
همچنین Wizard ها باعث ایجاد کد های اضافی و همچنین بالا رفتن حجم پروژه می شوند

بهتر است که شما از کد نویسی استفاده کنید .

کدی که برای Fill کردن گرید استفاده خواهید کرد را ، هر زمان که خواستید فرا بخوانید و گرید رو Refresh کنید !

alex750
دوشنبه 23 دی 1392, 15:31 عصر
با سلام مجدد ببینین دوستان من همه اینی رو که شما می گید می دونم وقتی برای اضافه کردن یک فرم جدید باز می کنم و رکورد جدید اضافه می کنم رکورد اضافه مبشه منتها بلافاصله بعد از اضافه شدن نمایش داده نمیشه باید فرمی که گریدویو توش است رو ببندم دوباره باز کنم مشکل رو هم می دونم از کجاست مشکل اینه که من فرم جدید رو show می کنم ووقتی می بندم فرم قبلی که اطلاعات رو باید نمایش بده و گریدویو تو اونه show هست به همبن خاطر تا حالا هر روشی رو رفتم جواب نداده حالا سوال من اینه که آیا event ای هست که بعد از بستن فرمی که اطلاعات رو وارد می کنیم رو فرم قبلی اعمال بشه یا روشی هست که این مشکل رو حل کنه همین

sagggad
دوشنبه 23 دی 1392, 15:38 عصر
یعنی میخواید اطلاعات رفرش بشه و دوباره به طور کامل اطلاعات بانک در گرید قرار بگیره؟؟
درسته؟

alex750
دوشنبه 23 دی 1392, 15:41 عصر
یعنی میخواید اطلاعات رفرش بشه و دوباره به طور کامل اطلاعات بانک در گرید قرار بگیره؟؟
درسته؟
آ بارکلا منتها من از تابع fill استفاده کردم ولی چون فرمی که اطلاعات رو باید نشون بده از قبل بازه می باشد درست عمل نمی کنه و باید فرم رو ببندم و دوباره باز کنم

alex750
دوشنبه 23 دی 1392, 15:48 عصر
دوستان بالاخره تونستم مشکل رو حل کنم برای اطلاع عرض میکنم که می تونید از رویداد activated فرمی که اطلاعات رو نشون می ده استفاده کنید چون این فرم مجددا فعال میشه این رویداد اول اجرا میشه
بازم بایت راهنمایی هاتون ممنون
:لبخندساده:

sagggad
دوشنبه 23 دی 1392, 15:49 عصر
از این کد استفاده میکنی؟

My_da.Fill(نام دیتاست)
DataGridView1.DataSource = نام دیتاست
DataGridView1.DataMember = "نام تیبل"

alex750
دوشنبه 23 دی 1392, 16:07 عصر
از این کد استفاده میکنی؟

My_da.Fill(نام دیتاست)
DataGridView1.DataSource = نام دیتاست
DataGridView1.DataMember = "نام تیبل"
دوست من بالاخره تونستم مشکل رو حل کنم برای اطلاع عرض میکنم که می تونید از رویداد activated فرمی که اطلاعات رو نشون می ده استفاده کنید چون این فرم مجددا فعال میشه این رویداد اول اجرا میشه
بازم بایت راهنمایی هاتون ممنون
:لبخندساده:

NasimBamdad
دوشنبه 23 دی 1392, 21:35 عصر
دوست من بالاخره تونستم مشکل رو حل کنم برای اطلاع عرض میکنم که می تونید از رویداد activated فرمی که اطلاعات رو نشون می ده استفاده کنید چون این فرم مجددا فعال میشه این رویداد اول اجرا میشه
بازم بایت راهنمایی هاتون ممنون
:لبخندساده:

درسته مشکلت حل شده ؟ اما اصلا بهینه و مناسب نیست !

alex750
سه شنبه 24 دی 1392, 07:31 صبح
درسته مشکلت حل شده ؟ اما اصلا بهینه و مناسب نیست !
خوب راه حل بهینه چیه؟

arash_flag
سه شنبه 24 دی 1392, 07:41 صبح
سلام دوستان

من ی سوال دارم :

من ی دونه گرید دارم که به بانک وصل نیست و من به صورت دستی به آن سطر اضافه میکنم حالا میخام بعد از کامل شدن سطر ها ، سطر به سطر درون بانک بریزم ؟
تشکر/

danialafshari
سه شنبه 24 دی 1392, 10:41 صبح
با سلام

خوب راه حل بهینه چیه؟
در نرم افزارهای بزرگ اگر دیده باشید یک فرم جدا داره برای ثبت اطلاعات که فقط با یک msgbox پیام ثبت رو به اطلاع کاربر میرسونه و درستش هم همینه
بعد اگر نیاز بود میتونی اون رکورد رو فیلتر کنی ...

سلام دوستان

من ی سوال دارم :

من ی دونه گرید دارم که به بانک وصل نیست و من به صورت دستی به آن سطر اضافه میکنم حالا میخام بعد از کامل شدن سطر ها ، سطر به سطر درون بانک بریزم ؟
تشکر/
قبلاً هم پاسخ داده شده
شما باید ابتدا اطلاعات رو در دیتاتیبل بریزید و سپس توسط دکمه "ثبت نهایی" تمام اطلاعات dt رو توسط حلقه در بانک ذخیره کنید
موفق باشید

alex750
چهارشنبه 25 دی 1392, 10:56 صبح
[QUOTE=danialafshari;1953315]با سلام

در نرم افزارهای بزرگ اگر دیده باشید یک فرم جدا داره برای ثبت اطلاعات که فقط با یک msgbox پیام ثبت رو به اطلاع کاربر میرسونه و درستش هم همینه
بعد اگر نیاز بود میتونی اون رکورد رو فیلتر کنی ...

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

NasimBamdad
چهارشنبه 25 دی 1392, 22:40 عصر
وقتی می گم از کد استفاده کن و تابعت رو صدا بزن برای همینه


SqlConnection cnn = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd = new SqlCommand();
cmd.Connection = cnn;
cnn.Open();
cmd.CommandText = "INSERT INTO daroo_usage(patientid,darooid,numberz) VALUES (@patientid,@darooid,@numberz)";
cmd.Parameters.AddWithValue("@patientid", textBox1.Text);
cmd.Parameters.AddWithValue("@darooid", comboBox3.SelectedValue);
cmd.Parameters.AddWithValue("@numberz", textBox109.Text);
cmd.ExecuteNonQuery();
cnn.Close();


این یک نمونه کد کامل برای INSERT کردن هست ، می بینید ؟ معادلش Update و Delete بنویس !



SqlConnection cnn3 = new SqlConnection(ConfigurationManager.AppSettings["ConnectionString"]);
SqlCommand cmd3 = new SqlCommand();
cmd3.Connection = cnn3;
cnn3.Open();
cmd3.CommandText = "SELECT dbo.daroo_usage.id, dbo.daroo_usage.patientid, dbo.patients.fname, dbo.patients.lname, dbo.daroo_type.daroo_name, dbo.daroo_usage.numberz FROM dbo.daroo_usage INNER JOIN dbo.patients ON dbo.daroo_usage.patientid = dbo.patients.id INNER JOIN dbo.daroo_type ON dbo.daroo_usage.darooid = dbo.daroo_type.id WHERE patientid ='" + textBox1.Text + "'";
SqlDataAdapter da3 = new SqlDataAdapter(cmd3);
DataSet ds3 = new DataSet();
da3.Fill(ds3);
DataGridView1.DataSource = ds3.Tables[0];
cnn3.Close();

اینم یک کد برای پر کردن DataGridView هست ،

شما می تونید بعد از اون کد مربوط به Insert , Update , Delete کردن ، این کد رو بنویسید که سریع DataGridView مجدد پر بشه و اطلاعات رو سریع ببینید !

Mahmoud.Afrad
پنج شنبه 26 دی 1392, 18:13 عصر
alex750 (http://barnamenevis.org/member.php?316651-alex750) کد پر کردن دیتاگرید و باز کردن فرم ثبت رو بزار تا راهنمایی بشید.

morteza khoshdoony
شنبه 08 اسفند 1394, 04:55 صبح
چجوری بایددر سی شارپ رکوردهای یک DataGridViewرادر زمان اجرا (موقع حذف واضافه کردن رکورد به بانک با کنترلهای تکس باس متصل به بانک)آپدیت کرد؟یعنی همون موقع نمایش داده بشه.:متفکر:

kamiloted
شنبه 08 اسفند 1394, 05:47 صبح
frmName_load(sender, e);

دوست عزیز این کد رو با نام فرم خودت میزاری پایین کدهای آپدیت و اینزرت و دلیت

حسین.کاظمی
شنبه 08 اسفند 1394, 09:00 صبح
و یا

frmname_load(null,null)

البته باید در رویداد لود فرم کوئری مربوط به بازخوانی اطلاعات جدول هم نوشته شده باشد.و یا میتونید برای بازخوانی اطلاعات از تابع استفاده کنید و بعد از عملیات اون تابع را فراخوانی کنید که بنظر شخصی من این راه مناسبی است.

AmiN0012
شنبه 08 اسفند 1394, 09:01 صبح
دوست عزیز اگر از wizard استفاده میکنی انتهای عملیات، ی خط کدی که در فرم لود نوشته میشه بصورت خودکار را بنویس.
مثال

this.kalaTableAdapter.Fill(this.dentistryDataSet.K ala);

اگر که کد نوشتی پاسخی که
kamiloted (http://barnamenevis.org/member.php?254967-kamiloted) دادند صحیح است.اگرم که دستور بانکو تو تابع نوشتی.تابعتو صدا کن به جاب form_load

morteza khoshdoony
یک شنبه 09 اسفند 1394, 11:02 صبح
سلام. این ویزارد و یا کد که فرمودید منظورتون برای اتصالDataGridView به بانک هست یا برای اتصال به بانک و حذف واضافه ی رکورد با استفاده ازتکست باکسها را میگید؟

AmiN0012
یک شنبه 09 اسفند 1394, 12:35 عصر
برای اتصال دیتاگرید به بانک هست.
وقتی دیتا گرید به بانک وصل میکنید.بعد اینکه با دستورات sql به بانک درج ویرایش یا حذف کردید باید این تغییرات در دیتاگرید هم نشون داده بشه.پس باید اخر کدهات بروزرسانی دیتاگرید همونطور که گفتم انجام بدی

rezashaban
دوشنبه 10 اسفند 1394, 02:20 صبح
برای اتصال دیتاگرید به بانک هست.
وقتی دیتا گرید به بانک وصل میکنید.بعد اینکه با دستورات sql به بانک درج ویرایش یا حذف کردید باید این تغییرات در دیتاگرید هم نشون داده بشه.پس باید اخر کدهات بروزرسانی دیتاگرید همونطور که گفتم انجام بدی
سلام دوستان
به نطر من برای حذف یک رکورد اصلا نیاز به رفرش کردن گرید نیست و میشه با نتیجه حذف فیلد که مقدار int برمیگردونه میشه اون رکورد رو با یک خط کد از گرید حذف کرد بدون نیاز به خوندن دوباره همه داده ها از دیتابیس + برای آبدیت هم برای فرم های کوچیک میشه همین کار رو کرد و برای بعضی فرم ها که بزرگ هستش قابل انجام نیست و باید به ناچار اطلاعات رو دوباره از دیتابیس بخونی
برای اون دوست عزیزمون هم که میخواست از فرم ثبت که اومد به فرم اصلی گریدش رفرش بشه میتونه از کد زیر استفاده کنه
var frm = new formName();
frm.Closed += closedEvent();
frm.show();

----event closed()---
کد رفرش گرید رو بذار اینجا