PDA

View Full Version : سوال: میخواهم وقتی روی یک سطر گرید کلیک میکنم فرم دوم (textBox) باز شود



nAVA470
شنبه 09 مرداد 1389, 14:47 عصر
با سلام
من یک فرم دارم که به صورت گرید اطلاعات را نشان میدهد و هم یک فرم که داده ها روو به صورت textbox نشان میدهد.
میخواهم وقتی روی یک سطر گرید کلیک میکنم فرم دوم (textBox) باز شود و اطلاعات مربوط به سطری که رو آن کلیک کرده ام را نشان دهد.
در vb.ne
با تشکر

http://barnamenevis.org/forum/images/statusicon/user_online.gif http://barnamenevis.org/forum/images/buttons/report.gif (http://barnamenevis.org/forum/report.php?p=1053006) http://barnamenevis.org/forum/images/misc/progress.gif

delasaee
شنبه 09 مرداد 1389, 16:44 عصر
منم یه همچین چیزی احتیاج دارم لطفاً کمک کنید

nasim bahari
شنبه 09 مرداد 1389, 17:09 عصر
سلام..........

اگه هم Txt ها و هم دیتاگرید شما از یه bindingSource استفاده کنند اونوقت به طور اوتوماتیک هر سطری از دیتا گرید را که انتخاب کنید در textBox ها هم اعمال می شود...

موفق و سبز و بهاری باشید

در امان از پاییز برگ ریزان

Mani_rf
شنبه 09 مرداد 1389, 17:12 عصر
مشکلت دقیقا تو کدوم قسمتشه؟
کلیات کار به این شکله :
مطمعنا اون سطری که روش کلیک میشه ، یا ID یا نام ،نام خانوادگی و یا هر فیلد کلیدی دیگه داره که اون را از سایر سطر ها متمایز میکنه، وقتی که روی سطر کلیک یا دابل کلیک میشه

روش اول : فیلد کلیدی را به فرم دوم بفرست (اگه میپرسی چطوری ، خیلی راحت ، یک متغیر Public تو فرم دوم تعریف کن و قبل از فراخوانی فرم دوم (Form2.Show) اون متغیر را با اون مقدار کلیدی پر کن) . بعد از باز شدن فرم دوم ، در رویداد Form_Load با استفاده از کلمه کلیدی که داری، اطلاعات مربوط به اون کلمه کلیدی را از دیتابیس و یا هرجای دیگه که ذخیره شده فراخوانی کن و تو TextBox ها قرار بده.

روش دوم : اگر تعداد فیلد ها کمه ، به تعداد فیلدها تو فرم دوم متغیر Public تعریف کن،( یا اگر میخوای کمی حرفه ای تر بشه یک آرایه تعریف کن ، و یا اگر میخوای خیلی حرفه ای بشه یک Structure بساز ) و همه فیلد ها را به اون ها نسبت بده و در هنگام باز شدن فرم دوم اطلاعات انتقال داده شده را در جاهای مناسب قرار بده.

nAVA470
یک شنبه 10 مرداد 1389, 09:16 صبح
مشکلت دقیقا تو کدوم قسمتشه؟
کلیات کار به این شکله :
مطمعنا اون سطری که روش کلیک میشه ، یا ID یا نام ،نام خانوادگی و یا هر فیلد کلیدی دیگه داره که اون را از سایر سطر ها متمایز میکنه، وقتی که روی سطر کلیک یا دابل کلیک میشه

روش اول : فیلد کلیدی را به فرم دوم بفرست (اگه میپرسی چطوری ، خیلی راحت ، یک متغیر Public تو فرم دوم تعریف کن و قبل از فراخوانی فرم دوم (Form2.Show) اون متغیر را با اون مقدار کلیدی پر کن) . بعد از باز شدن فرم دوم ، در رویداد Form_Load با استفاده از کلمه کلیدی که داری، اطلاعات مربوط به اون کلمه کلیدی را از دیتابیس و یا هرجای دیگه که ذخیره شده فراخوانی کن و تو TextBox ها قرار بده.

روش دوم : اگر تعداد فیلد ها کمه ، به تعداد فیلدها تو فرم دوم متغیر Public تعریف کن،( یا اگر میخوای کمی حرفه ای تر بشه یک آرایه تعریف کن ، و یا اگر میخوای خیلی حرفه ای بشه یک Structure بساز ) و همه فیلد ها را به اون ها نسبت بده و در هنگام باز شدن فرم دوم اطلاعات انتقال داده شده را در جاهای مناسب قرار بده.

برای اینکه مقدار فیلد کلیدی رو در متغیر acode بریزم این کد رو نوشتم که از گرید اون سلی که روش کلیک شده رو درون متغیر بریزه اشکال داره ونمیشه اگه امکان دار راهنمایی کنید.
ACode = TbookDataGridView.SelectedColumns.Item(0).DataGrid View.CurrentCell.Value

nasim bahari
یک شنبه 10 مرداد 1389, 11:58 صبح
برای اینکه مقدار فیلد کلیدی رو در متغیر acode بریزم این کد رو نوشتم که از گرید اون سلی که روش کلیک شده رو درون متغیر بریزه اشکال داره ونمیشه اگه امکان دار راهنمایی کنید.
ACode = TbookDataGridView.SelectedColumns.Item(0).DataGrid View.CurrentCell.Value



سلام.....دوست عزیز

امیدوارم که متوجه منظورت شده باشم....و جواب دلخواهت در زیر اومده باشه.....

برای خواندن ستون صفر از سطر انتخاب شده (کلیک شده)




Acode = Me.DataGridView1.Item(0, Me.DataGridView1.CurrentCellAddress.Y).Value.ToStr ing




موفق، سبز و بهاری باشین

Mani_rf
یک شنبه 10 مرداد 1389, 12:00 عصر
برای اینکه مقدار فیلد کلیدی رو در متغیر acode بریزم این کد رو نوشتم که از گرید اون سلی که روش کلیک شده رو درون متغیر بریزه اشکال داره ونمیشه اگه امکان دار راهنمایی کنید.
ACode = TbookDataGridView.SelectedColumns.Item(0).DataGrid View.CurrentCell.Value


اگر برای خوندن ستون 0 از ردیف کلیک شده می خوای استفاده کنید از روشی که Nasmi Bahari گفت استفاده کن اما اگر دقیقا همون سلولی که کلیک شده را لازم داری از این استفاده کن راحت تره:

Acode = TbookDataGridView.CurrentCell.Value

nasim bahari
یک شنبه 10 مرداد 1389, 12:09 عصر
اگر برای خوندن ستون 0 از ردیف کلیک شده می خوای استفاده کنید از روشی که Nasmi Bahari گفت استفاده کن اما اگر دقیقا همون سلولی که کلیک شده را لازم داری از این استفاده کن راحت تره:


Acode = TbookDataGridView.CurrentCell.Value


سلام....

من فکر می کنم کدی که شما لطف کردین گذاشتین، مقدار سلول انتخابی رو برمی گردونه.

در حالی که کد من با انتخاب سطر مورد نظر (مثلاً با کلیک بروی سر سطر) مقدار ستون مورد نظر که البته می تونه انتخاب هم نشده باشه. برمی گردونه.

البته بستگی به نیاز دوستمون داره.....

اگر اشتباه می کنم ، لطفاً توضیح دهید.....

Mani_rf
یک شنبه 10 مرداد 1389, 12:11 عصر
فکر کنم من مهم همین را گفتم!!!
و فکر کنم اول روش شما را تایید کردم!!!
بعد یک نکته نیمه آموزشی، تو VB.NET نیازی به .Tostring نیست، خود VB این کار را میکنه اما تو #C باید این کار را بکنید.

mohammad.moosaei
یک شنبه 10 مرداد 1389, 14:39 عصر
با سلام:


من یک فرم دارم که به صورت گرید اطلاعات را نشان میدهد و هم یک فرم که داده ها روو به صورت textbox نشان میدهد.
میخواهم وقتی روی یک سطر گرید کلیک میکنم فرم دوم (textBox) باز شود و اطلاعات مربوط به سطری که رو آن کلیک کرده ام را نشان دهد.
در vb.ne
با تشکر

سلام دوست من :

اگه می خوای بدون bindingSource این کار رو بکنی ، فکر کنم این روش از گرفتن متغیر Public از این حرفها ساده تره (با عرض پوزش از مدیر بخش:چشمک:) :

اول سازنده فرم دوم رو به این صورت بنویس و پارامترهای ورودی رو مقادیر سلولهای گرید قرار بده :




Public Sub New(ByVal name As String, ByVal family As String, ByVal address As String)

InitializeComponent()

txtName.Text = name
txtFamily.Text = family
txtAddress.Text = address

End Sub





و موقع ساختن object از فرم دوم برای Show کردن مقدیر سلولهل رو بهش بده :




With DataGridView1.CurrentRow

Dim frmObject As New frm2(.Cells(0).Value, .Cells(1).Value, .Cells(2).Value)
frmObject.Show()

End With


اگر هم از این روش (که خیلی آسونه و خرجی هم نداره ) نخوای استفاده کنی همون binding بهتره ، اما خودم از این استفاده میکنم .

موفق باشید .

nAVA470
دوشنبه 11 مرداد 1389, 08:24 صبح
سلام..........

اگه هم Txt ها و هم دیتاگرید شما از یه bindingSource استفاده کنند اونوقت به طور اوتوماتیک هر سطری از دیتا گرید را که انتخاب کنید در textBox ها هم اعمال می شود...

موفق و سبز و بهاری باشید

در امان از پاییز برگ ریزان

من از بایند که استفاده میکنم و این کد رو مینویسم که bindingsourc رو به فرم دوم که همون فرم frmbook هست معرفی کنم باز جواب نمیده
ممنون از حوصله تون
Private Sub TbookDataGridView_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles TbookDataGridView.CellClick

FrmBook.TbookBindingSource.Position = TbookBindingSource.Position
FrmBook.Show()

End Sub

nasim bahari
دوشنبه 11 مرداد 1389, 12:36 عصر
TextBox1.DataBindings.Add(New Binding("text", DataSet1, "book.name"))