-
انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر
با سلام
دو فرم دارم
در فرم اصلی عبارت جستجو وارد و با انتخاب دکمه جستجو، نتایج در DataGridView در فرم دوم نمایش داده می شود
در فرم دوم ردیف مورد نظر انتخاب و با کلیک روی دکمه ویرایش در پایین صفحه، فیلدهای مربوطه از GridView به TextBoxهای فرم اول انتقال می یابد
با چه کدی می تونم این کار را انجام بدهم؟ (با استفاده از معماری سه لایه)
آیا امکان پذیر است در GridView فقط تعدادی از فیلدهای مربوط به یک موجودیت را داشته باشیم ولی بخواهیم با انتخاب آن سطر "همه" فیلدهای فرم اصلی پر شود؟
با سپاس فراوان
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
می تونید در رویداد DoubleClick، گرید استفاده کنید
تا اون فیلد هایی رو که میخواهید رو به فرم دیگه انتقال بدید.
برای مثال:
Edit_stockRoom
editStockRoom = newEdit_stockRoom();
editStockRoom.txtprice.Text = GridviewSearch.SelectedRows[0].Cells["IDPiece"].Value.ToString();
editStockRoom.TxtDate1.Text = GridviewSearch.SelectedRows[0].Cells["Dateloginlogout"].Value.ToString();
در مورد سوال دوم هم میتونید id اون سطر رو بگیرید و دوباره جستجو رو بر اساس اون انجام بدید و هر فیلدی رو که میخواهید انتقال بدید.
امید وارم تونسته باشم منظورم رو برسونم.
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
در مورد کدی که نوشتید اگه درست متوجه شده باشم
ابتدا یک نمونه از فرم اصلی می سازیم؛ که در مورد پروژه من به صورت زیر است
frmCourse frm = new frmCourse();
frm.Show();
تا اینجا یک مشکل وجود داره و اینکه یک نمونه جدید از فرم اصلی می سازه ولی من میخوام در همان فرمی که از قبل باز بوده تکست باکس هاش پر بشن
حالا یکی از سطرهای گرید ویو را انتخاب می کنیم
در رویداد کلیک دکمه ویرایش که در این فرم است باید کدی نوشته بشه که تکست باکس های فرم اول را پر کنه
کدی که نوشتید سطر اول را انتخاب میکنه. چطور بهش بگم سطری که من انتخاب کردم را اطلاعاتش را برگردونه
می دونم اگه داخل خود گریدویو باشم با
dgvCourseResultSearch.Rows[e.RowIndex]
میشه شماره سطر را بدست آورد ولی از خارجش بلد نیستم
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
در مورد سوال دوم
نیاز به متدی برای جستجو دارم که خروجی این متد یک DataTable است
چطور می تونم این DataTable را به چند تکست باکس انتقال بدم؟
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
گفتم که میتونی از رویداد DoubleClick، استفاده کنی تا سطری رو که میخوای به textbox هات اعمال کنی.
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
private void btnGhaza_Click(object sender, EventArgs e)
{
bool flag = false;
for (int i = 0; i < Application.OpenForms.Count; i++)
{
if (Application.OpenForms[i].Name == "Rec_Mavad")
{
Application.OpenForms["Rec_Mavad"].BringToFront();
flag = true;
break;
}
}
if (!flag)
{
Rec_Mavad rec_Mavad = new Rec_Mavad();
//پر کردن فیلد
rec_Mavad.Show(this);
}
}
این در مورد ساختن یا نساختن دوباره شی فرم
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
ولی در مورد پر کردن فیلد فرمی که بازه می تونی در کد بالا قبل
Application.OpenForms["Rec_Mavad"].BringToFront();
این کدرو برای مثال بنویسی
Application.OpenForms["Rec_Mavad"].Controls["nameControl"].Text = "مقدار";
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
نقل قول:
نوشته شده توسط
behnam_khademi
گفتم که میتونی از رویداد DoubleClick، استفاده کنی تا سطری رو که میخوای به textbox هات اعمال کنی.
ببخشید حق با شماست، من اشتباه متوجه شدم
ولی من میخوام با کلیک روی دکمه ویرایش این اتفاق بیفته و از بیرون گرید ویو بلد نیستم چطور شماره سطر را باید بدست بیارم
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
سلام
اول خاصیت selectionMode گرید رو fuulrowselect کن و بعدش هم که کلیک میکنی روی سطر مورد نظر برای ویرایش میتونی از این کد برای دسترسی به محتوای خونه های گرید استفاده کنی
dataGridView1.CurrentRow.Cells[0].Value
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
ممنون afshines
همه چیز رو همون طور که گفتید نوشتم ولی زمانی که روی دکمه ویرایش کلیک می کنم دیباگر این پیغام را میده
NullRefrenceException was unhandled
Object reference not set to an instance of an object
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
نقل قول:
نوشته شده توسط
hamidkh
سلام
اول خاصیت selectionMode گرید رو fuulrowselect کن و بعدش هم که کلیک میکنی روی سطر مورد نظر برای ویرایش میتونی از این کد برای دسترسی به محتوای خونه های گرید استفاده کنی
dataGridView1.CurrentRow.Cells[0].Value
یه سوال
نمیشه از خارج از گرید ویو شماره سطرش را بدست آورد؟
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
dataGridView1.CurrentRow.Index
یا
dataGridView1.SelectedRows[0].Index
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
نقل قول:
نوشته شده توسط
hamidkh
dataGridView1.CurrentRow.Index
یا
dataGridView1.SelectedRows[0].Index
از راهنمایی تون واااااقعا ممنونم، کمک خیلی خوبی بهم کردید
سوال بعدیم را هم لطف کنید جواب بدید ممنون میشم
1. در مورد جواب afshines که برای نمایش نتایج جستجو یک فرم جدید باز نشه که کد ایشون این کار را میکنه ولی جایی که
Application.OpenForms["Rec_Mavad"].Controls["nameControl"].Text = "مقدار";
را اضافه می کنم دیباگر پیغام میده
2. من در گرید ویو فقط تعداد محدودی ستون میخوام داشته باشم ولی در فرمم تعداد بیشتری فیلد
می دونم که این کار باید از طریق یک متد جستجو باید انجام بشه اما نمی دونم چطور DataTable که خروجی متد جستجو هست را به تکست باکس ها انتقال بدم
به جواب سوال اول بیشتر نیاز دارم اگه فرصت جوابگویی به هر دو سوال را ندارید
بازم تشکر از اینکه وقت میگذارید
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
ببینید جای Rec_Mavad اسم فرمی که میخواهید مقادیر توش نشون بدین بزنین و جای nameControl نام تکست باکس.اگر خطا میده باز هم پیغام خطا روبذارید.
در مورد دوم هم 2 راه دارین یکی اینکه بیاین هر چی فیلد لازم دارین توی گرید بذارین و نمایشش ندین. راه بعدی که همون DataTable است وقتی اطلاعات رو از دیتا بیس خوندین و توی DataTable قرار دادین از این کد استفاده کنید
textBox1.Text = objDataTable.Rows[0]["fieldName"].ToString();
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
نقل قول:
نقل قول:
نوشته شده توسط
hamidkh
ببینید جای Rec_Mavad اسم فرمی که میخواهید مقادیر توش نشون بدین بزنین و جای nameControl نام تکست باکس. اگر خطا میده باز هم پیغام خطا روبذارید.
دقیقا همین کار را انجام دادم و این پیغام را داد
نقل قول:
در مورد دوم هم 2 راه دارین یکی اینکه بیاین هر چی فیلد لازم دارین توی گرید بذارین و نمایشش ندین.
اگه منظورتون اینه که تیک Visible را بردارم، این کار را کردم اما نشد، ظاهرا کلا دیگه اون ستون را نمی شناخت
نقل قول:
راه بعدی که همون DataTable است وقتی اطلاعات رو از دیتا بیس خوندین و توی DataTable قرار دادین از این کد استفاده کنید
textBox1.Text = objDataTable.Rows[0]["fieldName"].ToString();
امتحان می کنم ببینم جواب میده یا نه
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
دوست عزیز کد زیر رو توی رویداد دابل کلیک گرید ویوت بنویس:
(Application.OpenForms["Form1"].Controls["TextBox1"] as TextBox).Text = dataGridView1.SelectedCells[0].OwningRow.Cells["Name"].Value.ToString();
Form1= اسم فرمی که میخواهی اطلاعات توش وارد بشه.
TextBox1= اسم تکست باکست.
["Name"]= نام ستونی که می خواهی ازش اطلاعات خونده بشه.
توجه:
با کلیک روی هر سلول اطلاعات ردیف خونده میشه.
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
یااااااافتم... !!!:تشویق:
برنامه را به این صورت ویرایش کردم. (پیغام دیباگر را با خط 7 و 8 رفع کردم)
با این کد شما اطلاعاتی را جستجو می کنید و با کلیک روی دکمه جستجو، نتایج جستجو را در گرید ویو در یک فرم جدید نشان میدهید. با کلیک روی دکمه ویرایش در پایین این فرم اطلاعات را از گرید ویو میگیرید و در همان فرم قبلی نشان میدهید تا کاربر بتونه آنها را ویرایش کنه
bool flag = false;
for (int i = 0; i < Application.OpenForms.Count; i++)
{
if (Application.OpenForms[i].Name == "frmCourse")
{
int j = dgvCourseResultSearch.CurrentRow.Index;
frmCourse frm = (frmCourse)Application.OpenForms["frmCourse"];
frm.BringToFront();
frm.txtCourseCode.Text = dgvCourseResultSearch.Rows[j].Cells["clmCourseCode"].Value.ToString();
frm.txtCourseName.Text = dgvCourseResultSearch.Rows[j].Cells["clmCourseName"].Value.ToString();
flag = true;
break;
}
}
if (!flag)
{
frmCourse frm = new frmCourse();
int j = dgvCourseResultSearch.CurrentRow.Index;
frm.txtCourseCode.Text = dgvCourseResultSearch.Rows[j].Cells["clmCourseCode"].Value.ToString();
frm.Show(this);
}
این کد را در رویداد کلیک مربوط به دکمه ویرایش نوشتم
با تشکر فراوان از همه دوستانی که تا اینجا کمکم کردند
-
نقل قول: انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر
چطور میشه اطلاعات ازچند تا textboxتوی فرم1رو به یک datagridview توی فرم 2 انتقال داد؟
-
نقل قول: انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر
سلام.
راه زیاده منظور شما به چه صورت است.
منظور شما به این صورت است ؟ فرم 1 من 1 گرید داره. دکمه اضافه کردن رو که زدیم فرم 2 باز میشه حالا زمانی که تو فرم 2 اطلاعات رو که وارد کردیم دکمه ذخیره رو که زدیم به گرید فرم زیری اضافه بشه.
منظور شما به این صورته؟
-
نقل قول: انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر
این لینک رو ببین اگه منظورت چیزه دیگه ای هست بیشتر توضیح بده ببینیم مشکل چیه
-
نقل قول: انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر
اول خاصیت Modifiers دیتاگرید رو بذار روی Public و بعد توی دکمه ی فرم اول که با زدنش میری تو فرم دوم این کد رو بنویس
Form2 f2 = new Form2();
f2.dataGridView1.Rows.Add(textBox1.Text, textBox2.Text, textBox3.Text);
f2.ShowDialog();
-
نقل قول: انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر
سلام چطوری
با یه کلید روی یک سطر از دیتاگریدویو در فرم 2 مقادیر را یه خانه های مشخصی از دیتاگرید در فرم 1 انتقال بدم
و هر با هر بار کلید روی هر سطر دلخواه از دیتاگرید فرم 2 یک سطر به دیتاگرید فرم 1 اضافه کنه
-
نقل قول: فوری-فوری (انتقال اطلاعات از DataGridView به TextBox های یک فرم دیگر)
با سلام خدمت دوستان
من هم مشکل مشابه ایشون دارم
ببنید این کد که بسیار عالی هست فقط روی TextBox ها و Label هایی که در نمای Design روی فرم قرار می گیرند کار می کنه:
Application.OpenForms["Rec_Mavad"].Controls["nameControl"].Text = "مقدار";
اما من از طریق کد نویسی روی فرم Label تعریف کردم :
Label l12 = new Label();l12.Name = "len";
l12.Text = "";
l12.Name = "lNamAmozeshgah";
this.Controls.Add(l12);
ولی خط کد بالا روی این Label کار نمی کنه و خطا می ده
لطفا خواهشا کمک کنید!