PDA

View Full Version : سوال: نمایش آنی اطلاعات در dataGridView پس از ثبت داده های فرم در بانک؟



پیام حیاتی
یک شنبه 14 دی 1393, 10:28 صبح
سلام
این فرم برنامه هست :
127227
بعد از پر کردن فرم کردن و ثبت داده ها ، اطلاعات در dataGridView در همان لحظه نمایش داده نمیشن ، باید برنامه رو Stop کرد و باز Play تا در جدول نمایش داده بشن.
چطور میتونم همزمان با ثبت داده ها ، اطلاعات هم در این ابزار به نمایش در بیاد؟
تشکر

malizergani
یک شنبه 14 دی 1393, 10:59 صبح
سلام دوست عزیز شما باید از روش Binding استفاده کنید

پاسخ سوالتون (http://barnamenevis.org/showthread.php?481568-%D8%A8%D8%B1%D8%A7%D8%A8%D8%B1-%D9%82%D8%B1%D8%A7%D8%B1-%D8%AF%D8%A7%D8%AF%D9%86-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA-%D9%81%DB%8C%D9%84%D8%AF%D9%87%D8%A7%DB%8C-%D8%AC%D8%AF%D9%88%D9%84-%D8%AF%D8%B1-%D8%AF%D8%A7%D8%AE%D9%84-%D8%AA%DA%A9%D8%B3-%D8%A8%D8%A7%DA%A9%D8%B3%D9%87%D8%A7-%D8%A8%D8%AF%D9%88%D9%86-%D9%88%D8%A7%D8%B3%D8%B7%D9%87-%D8%AF%DB%8C%D8%AA%D8%A7-%DA%AF%D8%B1%DB%8C%D8%AF%D9%88%DB%8C%D9%88)

محمد رضا فاتحی
یک شنبه 14 دی 1393, 11:07 صبح
تو می تونی یکاری بکنی!!
اگه از جدول تو دیتابیس می خونی می تونی پس از ذخیره تو دیتابیس یه Select بزنی و دوباره دیتاگریدت رو پر کنی
من همیشه از این روش استفاده می کنم و جوای میده هیچ موقع هم احتیاج به ریست برنامه نیست

حسین.کاظمی
یک شنبه 14 دی 1393, 11:11 صبح
سلام
میتونی یه تابع بنویسی که رکوردها ی اون جدولی که اطلاعاتتوثبت میکنی را انتخاب کنه و بعد از کلیک بروری دکمه ثبت این تابع را فراخوانی کنی و اطلاعت ثبت شده را همان لحظه نمایش میده
موفق باشید

mojtabamalaekeh
یک شنبه 14 دی 1393, 11:19 صبح
سلام
برا اینکه برنامه کاربرپسند باشه بعد از ثبت ردیف جدید توی بانک، یه ردیف هم دستی به گرید اضافه میکنیم با همون اطلاعاتی که توی بانک ذخیره شده.
اینجوری لازم نیست کدی که برای نمایش رکوردها توی گرید نوشتی دوباره فراخوانی بشه.

اگر گریدت رو دیتاسورس دادی این کد نمونه:

DataRow r = ((DataTable)dgv.DataSource).NewRow();
r["ColumnName"] = value;
((DataTable)dgv.DataSource).Rows.Add(r);

اگر نه این کد:

dgv.Rows.Add();
int index = dgv.Rows.Count - 1;
dgv["ColumnName", index].Value = value;

پیام حیاتی
یک شنبه 14 دی 1393, 18:15 عصر
سلام
میتونی یه تابع بنویسی که رکوردها ی اون جدولی که اطلاعاتتوثبت میکنی را انتخاب کنه و بعد از کلیک بروری دکمه ثبت این تابع را فراخوانی کنی و اطلاعت ثبت شده را همان لحظه نمایش میده
موفق باشید
من یک تابع نوشتم که مقادیر رو Select کنه :

public partial class Form2 : Form
{
public void reloadingData()
{
//Reload information in DataGridView After Data Register
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=Taxi;Integrated Security=SSPI;");
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand.Connection = con;
da.SelectCommand.CommandText = "select d_name,d_carname,d_carnumber,d_phone from Driver";
con.Open();
da.Fill(dt);
con.Close();
dataGridView1.DataSource = dt;
}


و تابع رو در انتهای دستورات دکمه ثبت فراخوانی کردم :

127256
اما تغییری حاصل نشد!:افسرده:

بیتا حکمت
یک شنبه 14 دی 1393, 19:07 عصر
اینو به پایین خط 14 اضافه کنین ، ببنید چی میشه


GridView1.DataBind();

پیام حیاتی
یک شنبه 14 دی 1393, 19:14 عصر
اینو به پایین خط 14 اضافه کنین ، ببنید چی میشه


GridView1.DataBind();


خطا :
127259

feryt20
یک شنبه 14 دی 1393, 19:15 عصر
آقا connection رو نبستی هنوز
داخل if بعد از متد execute کانکشنو ببند ببین مشکلت حل میشه یا نه

البته اون خط GridView1.DataBind(); رو پاک کن

پیام حیاتی
یک شنبه 14 دی 1393, 19:19 عصر
آقا connection رو نبستی هنوز
داخل if بعد از متد execute کانکشنو ببند ببین مشکلت حل میشه یا نه

البته اون خط GridView1.DataBind(); رو پاک کن
ممنون ولی مشکل از بستن کانکشن نبود.

بیتا حکمت
یک شنبه 14 دی 1393, 19:26 عصر
ممنون ولی مشکل از بستن کانکشن نبود.

یعنی الان حل شد ، مشکلش از چی بود ؟

feryt20
یک شنبه 14 دی 1393, 19:34 عصر
داداش جسارتا تابع سلکتتو به این صورت تغییر بده
SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=Taxi;Integrated Security=SSPI;");
SqlCommand cmd = new SqlCommand("select * from Driver", con);
cmd.CommandType = CommandType.Text;
DataTable Table = new DataTable();
con.Open();
SqlDataReader Reader = cmd.ExecuteReader();
Table.Load(Reader);
dataGridView1.DataSource = Table;
اخرشم کانشنو ببند یادم رفت بنویسم

mojtabamalaekeh
یک شنبه 14 دی 1393, 19:42 عصر
متد DataBind فکر کنم برای ASP باشه. توی سی شارپ نداریم.
بستن کانکشن هم ربطی نداره.
مشکل کمبود این خط کد هست:

da.SelectCommand = new SqlCommand();



یعنی هنوز شیء ایجاد نشده میخوای به خواصش مقدار بدی:

da.SelectCommand.Connection = con;
دستور insert رو هم با ExecuteNonQuery اجرا کن. چه نیازی به DataReader هست؟

feryt20
یک شنبه 14 دی 1393, 19:47 عصر
متد DataBind فکر کنم برای ASP باشه. توی سی شارپ نداریم.
بستن کانکشن هم ربطی نداره.
مشکل کمبود این خط کد هست:

da.SelectCommand = new SqlCommand();



یعنی هنوز شیء ایجاد نشده میخوای به خواصش مقدار بدی:

da.SelectCommand.Connection = con;
دستور insert رو هم با ExecuteNonQuery اجرا کن. چه نیازی به DataReader هست؟

حاجی دعوا نداریم که
اون کدم همین کارو میکنه
ما قصدمون کمک بود
شما خودنمایی

اصن شما خوب
شما همه چی بلد
شما برنامه نویس
شما اسطوره
:تشویق::تشویق::تشویق::تشویق:: شویق::تشویق:

پیام حیاتی
یک شنبه 14 دی 1393, 19:49 عصر
داداش جسارتا تابع سلکتتو به این صورت تغییر بده
SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=Taxi;Integrated Security=SSPI;");
SqlCommand cmd = new SqlCommand("select * from Driver", con);
cmd.CommandType = CommandType.Text;
DataTable Table = new DataTable();
con.Open();
SqlDataReader Reader = cmd.ExecuteReader();
Table.Load(Reader);
dataGridView1.DataSource = Table;
اخرشم کانشنو ببند یادم رفت بنویسم
بسیار ممنون مشکل با این کد حل شد.

پیام حیاتی
یک شنبه 14 دی 1393, 19:51 عصر
متد DataBind فکر کنم برای ASP باشه. توی سی شارپ نداریم.
بستن کانکشن هم ربطی نداره.
مشکل کمبود این خط کد هست:

da.SelectCommand = new SqlCommand();



یعنی هنوز شیء ایجاد نشده میخوای به خواصش مقدار بدی:

da.SelectCommand.Connection = con;
دستور insert رو هم با ExecuteNonQuery اجرا کن. چه نیازی به DataReader هست؟
درسته DataBind مربوط به asp هست بنده هم asp کار هستم به تازگی وارد دنیای WinApp شدم برخی ابزار اونجا هست که کار با همچین مواردی رو خیلی راحت تر میکنه updatePanel,Ajax .... .
از همگی به خاطر زمان و کمک در حل مشکل خیلی :قلب::قلب:ممنونم.

aslan
یک شنبه 14 دی 1393, 21:04 عصر
اشتباه ...... حذف شود