ایجاد Relationship بصورت داینامیک
من در یک فرم دو عدد دیتاگرید قرار داده ام و هر دیتاگرید را توسط یک DataSet جداگانه و با استفاده از کدنویسی و در زمان اجرا پر میکنم. سئوال من این است که چگونه میتوانم رابطه بین این دو گرید را که یکی از آنها زیرمجموعه ای از هر رکورد از گرید اول میباشد را برقرار کنم بصورتیکه وقتی در دیتاگرید اول جابجا میشویم در دیتاگرید دوم زیرمجموعه های آن رکورد نمایش داده شود.
نقل قول: ایجاد Relationship بصورت داینامیک
به جای دو تا DataSet از یه DataSet استفاده میکنی و با استفاده از متد RelationShip ارتباطات مربوطه رو ایجاد میکنی.
نقل قول: ایجاد Relationship بصورت داینامیک
دوست عزیز ممنونم، به گفته شما عمل کردم و از یک DataSet استفاده کردم. ولی متاسفانه موفق نشدم Relashin رو با کدنویسی برقرار کنم. اگه زحمت بکشی کد نمونه ای برای راهنمایی بنویسی دستات رو ماچ میکنم
نقل قول: ایجاد Relationship بصورت داینامیک
به کد زیر دقت کن، این کد یک ارتباط بین دوتیبل موجود در یک دیتاست ایجاد میکند
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
حالا میتونی دست آقا مصطفی رو ماچ کنی، چون فعالیت خوبی داره توی سایت ;)
نقل قول: ایجاد Relationship بصورت داینامیک
اینم یه مثال کامل با دو تا 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