من یک برنامه دفترچه تلفن درست کردم
که 2 تا فرم داره
فرم 1 = فقط دیتا گرید ویو هست
و فرم 2 = صفحه ورود اطلاعات
سوالم اینه که
وقتی توی فرم 2 اطلاعاتم رو ثبت میکنم همون لحظه توی دیتا گرید ویو نمیفته
در حالی که کوری اپدیت دیتا گرید ویو رو توی فرم اولم نوشتم (وثتی از صفحه اول اطلاعات ثبت میکنم مشکلی نیست و همون لحظه ثبت میشه و آپدیت میشه گرید ویو)
منو راهنمایی بکنید
میتونید فرم دوم را ShowDialog کنید و بعد از دستور نمایش فرم دوم گرید را Bind کنید
Fprm2 frm2=new Form2(); frm2.showdialog(); //دستور لود مجدد گرید
اصلا وقتی که توی فرم 2 اسمی از دیتاگرید ویو میارم خط قرمز زیرش میکشه
یعنی شیء دیتاگرید ویو چون توی فرم 2 نیست و توی فرم اولم هست قبول نمیکنه
اینم دستور لود گرید ویو هست ! البته با پروسیجر
private void showdgw() } SqlDataAdapter adp = new SqlDataAdapter("showdgw", con); DataTable dt = new DataTable(); adp.Fill(dt); {
اصلا این مشکل من حل نمیشه چرا؟
مدیر محترم سایت لطفاً بنده رو راهنمایی بکنید
باتشکر
ببینید دوست من شما دسترسی به اجزا فرم زیر ندارید مگر که اون رو public کنید
میتونید خاصیت modifiers گرید رو Public کنید
بعد از فرم دوم بهش دسترسی دارید
خاصیت دیتاگرید ویو رو توی فرم اولم به Public تغییر دادم
اما بازم توی قسمت کد نویسی فرم دوم اثری ازش نمیاد
باید ابتدا از روی فرم اول New بسازید و نام نمونه به گرید داخلش دسترسی دارید
((Form1)f).dataGridView1.Rows.Add(row);
Form1 فرم زیرین هست
بازم نشد
لطفا یک نمونه برنامه بذارید
من واقعا توی این مسئله خیلی گیر کردم
خیلی مدته اصلا نمیتونم کارکنم
کدتون رو ضمیمه کنید تا براتون درست کنم
دستور ثبت کامله و مشکلی نیست
وقت مشکل اینه که اصلا نمیتونم اثری از دیتا گرید ویو رو توی فرم 2 بیارم
شما عملیات به روز رسانی را همون فرم اول انجام بدید
بعد از ثبت کد زیر را در فرم دوم بنویسید
DialogResult=DialogResult.Ok;
در فرم اول به شکل زیر فرم دوم را نمایش دهید و بعد گرید را به روز رسانی کنید
form2 f2=new form2(); if(f2.ShowDialog()==DialogResult.Ok) { BindGrid();//تابع بایند گرید }
نشد که نشد
خواهشاً اگر امکان داره یک ویدیوی آموزشی درست کننید
ممنون میشم واقعا چون خیلی گیر کردم
کد هاتون رو اصلاح کردم
کد کلید ثبت در فرم دوم را به شکل زیر تغییر دهید
private void btn_Save_Click(object sender, EventArgs e) { SqlCommand cmd = new SqlCommand(); cmd.Connection = con; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "inserttbl"; cmd.Parameters.Add("@id", SqlDbType.Char, 3).Value = txt_Code.Text; cmd.Parameters.Add("@name", SqlDbType.NVarChar, 50).Value = txt_Name.Text; cmd.Parameters.Add("@family", SqlDbType.NVarChar, 50).Value = txt_Family.Text; cmd.Parameters.Add("@mobile1", SqlDbType.NVarChar, 50).Value = txt_M1.Text; cmd.Parameters.Add("@mobile2", SqlDbType.NVarChar, 50).Value = txt_M2.Text; cmd.Parameters.Add("@worktell", SqlDbType.NVarChar, 50).Value = txt_Wtell.Text; cmd.Parameters.Add("@R", SqlDbType.Int).Direction = ParameterDirection.ReturnValue; con.Open(); cmd.ExecuteNonQuery(); if (cmd.Parameters["@R"].Value.ToString() == "0") { MessageBox.Show("ثبت نشد", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { MessageBox.Show("ثبت شد","اطلاعات",MessageBoxButtons.OK,MessageBoxIcon.Information); } con.Close(); DialogResult = DialogResult.OK; }
در فرم اول کد باز کردم فرم دوم را به شکل زیر تغییر دهید
private void ثبتجدیدToolStripMenuItem_Click(object sender, EventArgs e) { frm_Insert f2 = new frm_Insert(); if (f2.ShowDialog() == DialogResult.OK) { showdgw(); } }
مهندس واقعاً بسیار ممنونم
خیلی خوشحال شدم
ببخشید برای حذف هم باید همینجوری انجام داد؟ یعنی بعد از دستور حذف اینهارو اضافه کنم با کمی تغییر!؟
خواهش میکنم دوست من
بله باید به همین صورت عمل کنید
سلام
این دستور بطور صحیح اجرا شد
اما وقتی کاربر کلید ثبت رو میزنه صفحه بسته میشه و باید دوباره بره قسمت ثبت
چجوری میشه که صفحه بسته نشه؟
بابت همه زحمت ها ممنون
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)