منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : اذا احد ما له خبرة مع الـ List
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

حقيقة هذه اول مرة اجد نفسي انغمس في الـ List واجربها ولكن واجهتني مشكلة في البحث والانتقال الى سطر محدد 

معي فئة بهذا الشكل .

PHP كود :
Public Class MailMessageList
    Inherits 
List(Of MailMessage)
 
   Public Sub New()
 
       InitializeList()
 
   End Sub
    Private Sub InitializeList
()
 
       '.pic = Form1.PictureBox1.Image,
        AddRange(New MailMessage() {
            New MailMessage() With {
                .MsgDate = DateTime.Today,
                .Subject = "RE: Web Design Tip: How-To Add jQuery Yellow Fade Effect to ASP.NET GridView", .Sender = "رئيس قسم المحفوظات",
                .Text = "محمد خليل سالم",
        .IsRead = False
            },
            New MailMessage() With {
                .MsgDate = DateTime.Today.AddDays(-1),
                .Subject = "RE: Multitasking (Message from the CTO, newsletter 49)",
                .Sender = "Pietro Allegretti", .Text = "Let me thank you Julian. You make me discover Pomodoro Technique...",
        .IsRead = False
            },
            New MailMessage() With {
                .MsgDate = DateTime.Today.AddDays(-2),
                .Subject = "Advanced CodeRush Plug-ins: Converting an Object Initializer into a Constructor",
                .Sender = "Mark Miller (DevExpress)", .Text = "Today Rory Backer and I presented an Advanced CodeRush Plug-ins session, showing how to cr",
        .IsRead = True
            },
 })
    End Sub
End Class 

وهي تقوم على وراثة الفئة التالية

PHP كود :
Public Class MailMessage
    
    Sub 
New()
 
       ' TODO: Complete member initialization 
    End Sub

    Public Property IsRead() As Boolean
    Public Property MsgDate() As DateTime
    Public Property Subject() As String
    Public Property Sender() As String
    Public Property Text() As String
    Public Property pic() As Image
End Class 

لاظهار البيانات

PHP كود :
Dim bin As List(Of MailMessage) = New MailMessageList()

 Me.gridControl1.DataSource bin 

يتم عرض البيانات في الاداة Gride ولكن عندما حاولت البحث عن قيمة والانتقال الى الصف المحدد لم تفلح المحاولات .

من سبق له التعامل مع هذه الخلطة الغريبة .


ارفق مشروع مصغر حتى اقوم بتجربة الاكواد التى تناسب فى ذلك
حتى اتمكن من تحديد كود البحث هيكون من خلال gridControl فقط
ولا ستحتاج الى تعديل الاكوادالاخرى ليسهل هذا الامر

وان انا اقول بدون علم لا يفيدك فى شئ بالنهاية
فى انتظار ردك بارفاق مشروع مصغر

تحياتى لك
هل معك مكونات Devexpress اذا كانت معك فهنا يمكنك ان تشغل نفس المثال
فالمشروع مدمج مع الفيجول ستوديو



اذا كنت تريد عمل فلتر 
يمكنك عمل ذلك من خلال الليست 
مثال 

كود :
       For Each msg As MailMessage In bin
           If msg.IsRead Then
               '
           Else
               '
           End If
       Next


اما اذا كنت تريد تحديد صف معين فى الجريد كونترول فيجب عليك المرور على الصفوف لتحديد ما اذا كان يطابق ما تريد ام لا

للاسف انا لا استخدم أدوات Devexpress
لكن جرب هذا الكود ربما يفيدك


كود :
Private Function GetRowHandleByColumnValue(ByVal view As GridView, ByVal ColumnFieldName As String, ByVal value As Object) As Integer
 Dim result As Integer = GridControl.InvalidRowHandle
 Dim i As Integer
 For i = 0 To view.RowCount - 1
   If view.GetDataRow(i)(ColumnFieldName).Equals(value) Then
     Return i
   End If
 Next
 Return result
End Function

Private Sub GridViewAuthorization_ValidateRow(sender As Object, _
e As DevExpress.XtraGrid.Views.Base.ValidateRowEventArgs) Handles _
       GridView1.ValidateRow
       Dim view As GridView = TryCast(sender, GridView)

Dim mcolMenuID As GridColumn = view.Columns(0)
Dim getcolMenuID As String = Convert.ToString(view.GetRowCellValue(e.RowHandle, mcolMenuID))
Dim rowHandle As Integer = GetRowHandleByColumnValue(GridViewMenu, "ID", view.GetRowCellValue(e.RowHandle, mcolMenuID))
               If rowHandle <> GridControl.InvalidRowHandle Then
                   view.FocusedColumn = view.Columns.ColumnByFieldName("ID")
                   view.FocusedRowHandle = rowHandle
                   view.ShowEditor()
                   obj.getMsgBox("5004", "", "", MsgBoxStyle.Information)
                   e.Valid = False
               End If
End Sub
وعليكم السلام 

هذة طريقة إعتماد الـ List أو الـ Collection كمصدر للبيانات

[attachment=18138]

[attachment=18139]

[attachment=18140]

[attachment=18141]

[attachment=18142]

[attachment=18143]

[attachment=18144]

[attachment=18145]




أنا لو مكانك أحول الـ List إلى Datatable وأربطها عادي بالـ DataGrigView
شكرا جزيلا ، جاري مراجعة هذه المعلومات
صاحب الحلول الدائماً الاخ عبدالله الدوسري
ما قصر فى التوضيح والشرح

تحياتى له ولك
تمنياتى لكم التوفيق
والله كما قلت اخي الدوسي ، تحويلها الى DataTable  وبلا وجع دماغ
ااضافة بسيطة
جابة كل اسئلتك تكمن في المواضيع التالية:

الجزء الأول
الجزء الثاني

الفكرة

اما انك تقوم بتحويل list الي Datatable مباشرة و هذا ستجده في الجزء الأول
أو تبني Colleection الخاصة بك بنفسك و هذا ما يتحدث عنه الجزء الثاني
شكرا أخ سيلفر جاري الاطلاع