PDA

View Full Version : ارتباط DataGrid و TextBox



M.Soroor
شنبه 27 بهمن 1386, 14:55 عصر
من در Form1 دو تا TextBox شامل txtName و txtFamily دارم و یک کلید جستجو

وقتی کاربر یکی یا هر دو TextBox رو با اطلاعات مربوطه پر کرد و برروی کلید جستجو کلیک کرد
یک دیالوگ باز می شود که نتیجه جستجو (فرضآ از دیتابیس stu جدول info) در این دیالوگ در یک DataGrid نمایش داده می شود

تا اینجای کار مشکلی نیست اما من می خوام کاری کنم که وقتی کاربر یکی از رکوردهای DataGrid رو (با ماوس یا حرکت کلیدهای جهت نمای بالا و پایین) انتخاب کرد اطلاعات اون رکورد در TextBoxهای موجود در این دیالوگ نمایش داده بشه
در واقع می خوام بدونم چطور میشه این DataGrid رو به TextBoxهای داخل این دیالوگ متصل کرد؟


کد مربوط به جستجو هم در رویداد لود دیالوگ این هست:
(ابجکت ها قبلآ تعریف شدند)


objDataAdapter.SelectCommand = New OleDbCommand
objDataAdapter.SelectCommand.Connection = objConnection
objDataAdapter.SelectCommand.CommandText = "SELECT * FROM info WHERE (name LIKE @name) AND (family LIKE @family)"
objDataAdapter.SelectCommand.Parameters.AddWithVal ue("@name", "%" + Form1.txtName.Text + "%")
objDataAdapter.SelectCommand.Parameters.AddWithVal ue("@family", "%" + Form1.txtFamily.Text + "%")

objDataAdapter.SelectCommand.CommandType = CommandType.Text
objDataAdapter.Fill(objDataSet, "info")

DataGrid1.AutoGenerateColumns = True
DataGrid1.DataSource = objDataSet
DataGrid1.DataMember = "info"

ghafoori
شنبه 27 بهمن 1386, 15:28 عصر
دوست عزیز این کار را می توانید انجام دهید رویدادی را در فرم جستجوی خود ایجاد کنید وقتی کاربر روی سطری از دیتاگرید کلیک کرد ان رویداد فراخوانی شده و اطلاعات ان را سطر را انتقال دهد در فرم اول که فرم جستحو را تعریف کردی کدی برای ان رویداد می نویسید با انتخاب سطر اطلاعات بلافاصله به فرم 1 فرستاده می شود
این هم یک کد ساده در فرم سرچ این کد


Public Event select_cell(ByVal content As String)
Private Sub DataGridView1_CellEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellEnter
RaiseEvent select_cell(Me.DataGridView1.Rows(e.RowIndex).Cell s(e.ColumnIndex).Value.ToString)
End Sub

در صفحه اصلی


Dim WithEvents f As Form1
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Sub do_select(ByVal s As String) Handles f.select_cell
Me.textbox1.text = s
End Sub

روشهای دیگر هم دسترسی مستقیم به کنترل مربوط یا تعریف یک خصوصیت است که البته این راه به نطر من مناستر است

M.Soroor
شنبه 27 بهمن 1386, 17:06 عصر
ممنون از راهنماییتون
اما من نمیخوام که اطلاعات رکورد انتخاب شده در DataGrid، در TextBoxهای فرم قبلی نمایش داده بشه
اشتباه از من بود که سوالم رو دست مطرح نکردم

منظور من فرم جاری هست
یعنی مثلآ در Form2 یه DataGrid و دو تا TextBox داریم
حالا من می خوام کاری کنم که وقتی کاربر یکی از رکوردهای DataGrid رو (با ماوس یا حرکت کلیدهای جهت نمای بالا و پایین) انتخاب کرد، اطلاعات رکورد انتخاب شده در TextBoxهای موجود در Form2 نمایش داده بشه

فرضا مقدار فیلد Name در TextBox1 و مقدار فیلد Family در TextBox2

nasseritemp
شنبه 27 بهمن 1386, 17:07 عصر
شما باید TextBoxها رو به DataTable ای که DataSource مربوط به DataGrid هست Bind کنید.
Me.TextBoxName.DataBindings.Add(New Binding("Text", DataTableName, "FieldName"))