الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

تحويل ال DataView إلى DataSet

مغلق
بدأه alharethi في 19 مارس 2005 · 1 رد · 712 مشاهدة · في ASP.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم جميعا

كما يفهم من السؤال!! القضية كالتالي:

عندي كم كبير من المعلومات تعود الي من قاعدة البيانات و احفظها في1 DataSet. لابد من فلترة او ترشيح هذا الداتاسيت و لا توجد طريقة لعمل ذلك الا اذا حفظت قيمة الداتاسيت في Dataview. الان احتاج الى ارجاع الـ XML من الـDataview و بالتالي علي ان ارجع الـ Dataview المفلترة الى 2 DataSet من جديد....

هل من حل لديكم و مشكلتي يمكن ان تفهم بمجموعة الاكواد هذه

ملاحظة ... لابد من حفظ الـDataSet 1 في الذاكرة قبل عملية الفلترة كما سيتبين في الكود التالي:

Code # 1

Public Function LoadAllTerminals(ByVal reportlevel As enReportLevel) As DataView
        
        Dim dsAll As System.Data.DataSet
        Dim dView As System.Data.DataView
        Dim SQL As String

        dsAll = _Cache("AllTerminalsRollupGroups")

        If dsAll Is Nothing Then
            dsAll = New DataSet

            SQL = "SELECT * FROM rpt.tbr_group_lookup ORDER BY GROUP_NAME ASC"

            dsAll = da.DSFromSQL(SQL)

            _Cache("AllTerminalsRollupGroups") = dsAll

            '_Cache.Insert("All", dsAll, Nothing, _CacheExp, _Cache.NoSlidingExpiration)
        End If

        dView = dsAll.Tables(0).DefaultView

        Select Case reportlevel
            Case enReportLevel.enReLevel_Terminals
                dView.RowFilter = "Group_Level = 1 and BITS_GRP_FLG = 1"
            Case enReportLevel.enReLevel_Billing
                dView.RowFilter = "Group_Level = 1 and BILLING_FLG = 1"
            Case enReportLevel.enReLevel_Implementation
                dView.RowFilter = "Group_Level = 1 and IMP_FLG = 1"
            Case enReportLevel.enReLevel_BitsRollup
                dView.RowFilter = "Group_Level = 2"
            Case enReportLevel.enReLevel_RORollup
                dView.RowFilter = "Group_Level = 3"
        End Select

        Return dView
    End Function

Code #2

Private Function RaiseCallbackEvent(ByVal GroupSelection As String) As String
        Try
            _oRpt = New ROVER_BusinessObject.Report(Treeview1.SelectedNode.ID.ToString, Me.Context)
            Dim SQL As String
            Dim newDView As System.Data.DataView
            Dim ds As New DataSet

            newDView = _oRpt.LoadAllTerminals(_oRpt.Get_EnumType_enReportLevel(GroupSelection))

' هنا اريد ان احفظ ما يوجد بداخل هذه الـ newDView 
' بداخل داسيت جديد 
            
         Return ds.GetXml

        Catch ex As Exception
            Dim test As String = ex.Message
        End Try


    End Function
Quran_Signature.jpg
#2

السلام عليكم جميا

على كل حال ... للفائدة الحمد لله تخلصت من هذه المشكلة و لعلها تفيد من يبحث عنها.

من خلال الكود السابق ... وجدنا انه اصلا الـ dView حصل لها فلترة ثم عاديت الينا و حصلنا على قيمتها بواسطة هذا الكود:

newDView = _oRpt.LoadAllTerminals(_oRpt.Get_EnumType_enReportLevel(GroupSelection))

الان و من اجل ان نحصل على الـ XML من هذه الداتافيو ... لا بد اولا من تكوين كائن جديد من نوع DataTable و نسميها dt

الكود:

dt = newDView.Table.Clone()

يقوم بوضع الهيكلة الاساسية للـ newDView و ذلك باستخدام خاصية Clone

ثم من اجل ان تضيف كل النتائج الموجودة بداخل كل row, قمنا اولا باضافة الـ DataTable الى قائمة الـ Tables لكائن الداتاسيت ثم فلعنا loop من اجل الحصول على كل صف و اضافتها الى DataTable td

بعد ذلك اضفنا الـ DataTable td الى قائمة الـ Tables للداتا سيت فحصلنا بذلك على الـ XML و التي هي خاصية وحيدة فقط لكائن الداتا سيت

ان شاء الله تستفيدوا منها و السلام عليكم

newDView = _oRpt.LoadAllTerminals(_oRpt.Get_EnumType_enReportLevel(InputParam))
                    dt = newDView.Table.Clone()
                    If ds.Tables.Count = 0 Then
                        ds.Tables.Add(dt)
                    End If
                    For Each viewRow In newDView
                        ds.Tables(0).ImportRow(viewRow.Row)
                    Next
                    Return ds.GetXml

تم تعديل هذه المشاركة بواسطة alharethi في 23 مارس 2005 في 03:22

Quran_Signature.jpg

هذا الموضوع مغلق.

مواضيع مشابهة