PDA

View Full Version : ایجاد Relationship بصورت داینامیک



edisoon
یک شنبه 07 مهر 1387, 18:11 عصر
من در یک فرم دو عدد دیتاگرید قرار داده ام و هر دیتاگرید را توسط یک DataSet جداگانه و با استفاده از کدنویسی و در زمان اجرا پر میکنم. سئوال من این است که چگونه میتوانم رابطه بین این دو گرید را که یکی از آنها زیرمجموعه ای از هر رکورد از گرید اول میباشد را برقرار کنم بصورتیکه وقتی در دیتاگرید اول جابجا میشویم در دیتاگرید دوم زیرمجموعه های آن رکورد نمایش داده شود.

mostafaaa
یک شنبه 07 مهر 1387, 18:28 عصر
به جای دو تا DataSet از یه DataSet استفاده میکنی و با استفاده از متد RelationShip ارتباطات مربوطه رو ایجاد میکنی.

edisoon
دوشنبه 08 مهر 1387, 00:01 صبح
دوست عزیز ممنونم، به گفته شما عمل کردم و از یک DataSet استفاده کردم. ولی متاسفانه موفق نشدم Relashin رو با کدنویسی برقرار کنم. اگه زحمت بکشی کد نمونه ای برای راهنمایی بنویسی دستات رو ماچ میکنم

bardia goharbin
دوشنبه 08 مهر 1387, 00:17 صبح
به کد زیر دقت کن، این کد یک ارتباط بین دوتیبل موجود در یک دیتاست ایجاد میکند

Private Sub CreateDataRelation()
Dim obj_DataRelation As System.Data.DataRelation

Dim obj_ParentClmn, obj_ChildClmn As DataColumn

'Get the reference of colums to create a relation between.
obj_ParentClmn = obj_DataSet.Tables("Category").Columns("CategoryId")
obj_ChildClmn = obj_DataSet.Tables("Product").Columns("CategoryId")

'Creates a relation object, Parameters required are - New Relation Name, Object of Parent & Child column respectively.
obj_DataRelation = New DataRelation("relation_Category_Product", obj_ParentClmn, obj_ChildClmn)

obj_DataSet.Relations.Add(obj_DataRelation) ' Adding Relation to the dataset that holds the tables.

End Sub

حالا میتونی دست آقا مصطفی رو ماچ کنی، چون فعالیت خوبی داره توی سایت ;)

mostafaaa
دوشنبه 08 مهر 1387, 09:17 صبح
اینم یه مثال کامل با دو تا DataGridView

Imports System.Data.OleDb
Public Class Form1
Const ConnectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Database1.accdb"
Dim Connection As OleDbConnection
Dim DataAdapter As OleDbDataAdapter
Dim DataSet As New DataSet
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Connection = New OleDbConnection(ConnectionString)
Connection.Open()
DataAdapter = New OleDbDataAdapter(New OleDbCommand("SELECT * FROM tblName", Connection))
DataAdapter.Fill(DataSet, "tblName")
DataAdapter = New OleDbDataAdapter(New OleDbCommand("SELECT * FROM tblFamily", Connection))
DataAdapter.Fill(DataSet, "tblFamily")
DataSet.Relations.Add("MyRelation", Me.DataSet.Tables("tblName").Columns("ID") _
, Me.DataSet.Tables("tblFamily").Columns("ID"))
Me.DataGridView1.DataSource = Me.DataSet
Me.DataGridView1.DataMember = "tblName"
End Sub

Private Sub DataGridView1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.Click
Me.DataSet.Relations("MyRelation").ChildTable.DefaultView.RowFilter = "ID=" & _
Me.DataGridView1.CurrentRow.Cells("ID").Value
Me.DataGridView2.DataSource = Me.DataSet.Relations("MyRelation").ChildTable
End Sub
End Class