تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
كيف التعامل مع DataGridView في حال وجود اعمدة غير متطابقة في DataSource
#1
هذه مقاله في موقع مايكروسوفت

إذا كان عنصر تحكم DataGridView بالفعل أعمدة عند تعيين الخاصية DataSource، تتم مقارنة أعمدة منضم موجودة إلى الأعمدة في مصدر البيانات والاحتفاظ بها كلما كان هناك تطابق. يتم الاحتفاظ بالأعمدة غير المنضمة دائما. تتم إزالة أعمدة منضمة التي لا يوجد تطابق في مصدر البيانات. الأعمدة في مصدر البيانات التي لا يوجد تطابق في عنصر التحكم إنشاء كائنات DataGridViewColumn جديدة، والتي يتم إضافتها إلى نهاية مجموعة الأعمدة.



المشكله التي تواجهني اني عند عملية تحميل البيانات من جداول مختلفة يتم عرض الاعمدة المتطابقة فقط و الاعمدة التي تم انشائها في التصميم تختفي لماذا 
و هل يوجد حل لتثبيت هذه الاعمدة
الرد
تم الشكر بواسطة: سعود
#2
......   اللي اعرفه ان شبيكة البيانات اذا صممناها واضفنا لها اعمدة  لا نربطها بخاصية DataSource  وانما نسند لها قيم من المصدر الوسيط وهو  اما DataSet  او DataTable .

PHP كود :
Public Class Form1

    Dim dbpath 
As String IO.Path.GetDirectoryName(Application.ExecutablePath) & "\db.accdb"
 
   Dim str As String "provider=microsoft.ace.oledb.12.0;data source=" dbpath
    Dim dt 
As New DataTable
    Dim con 
As OleDb.OleDbConnection
    Dim da 
As OleDb.OleDbDataAdapter
    Private Sub gd
()
 
       dt.Clear()
 
       d1.DataSource Nothing
        d1
.Rows.Clear()
 
       con = New OleDb.OleDbConnection(str)
 
       da = New OleDb.OleDbDataAdapter("select * from tb"con)
 
       da.Fill(dt)
 
       d1.DataSource dt
        
''اما الاخرى لن نربطها عبر الخاصية 
        
' DataSource
        d2.Rows.Clear()
        For Each row As DataRow In dt.Rows
            d2.Rows.Add(row(0), row(1))
        Next
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        gd()
    End Sub
End Class 


الملفات المرفقة
.zip   WindowsApp1.zip (الحجم : 32.7 ك ب / التحميلات : 12)
الرد
تم الشكر بواسطة: بسام محمدغانم , غدير الصليحي
#3
(24-11-21, 08:49 PM)سعود كتب : ......   اللي اعرفه ان شبيكة البيانات اذا صممناها واضفنا لها اعمدة  لا نربطها بخاصية DataSource  وانما نسند لها قيم من المصدر الوسيط وهو  اما DataSet  او DataTable .

PHP كود :
Public Class Form1

    Dim dbpath 
As String IO.Path.GetDirectoryName(Application.ExecutablePath) & "\db.accdb"
 
   Dim str As String "provider=microsoft.ace.oledb.12.0;data source=" dbpath
    Dim dt 
As New DataTable
    Dim con 
As OleDb.OleDbConnection
    Dim da 
As OleDb.OleDbDataAdapter
    Private Sub gd
()
 
       dt.Clear()
 
       d1.DataSource Nothing
        d1
.Rows.Clear()
 
       con = New OleDb.OleDbConnection(str)
 
       da = New OleDb.OleDbDataAdapter("select * from tb"con)
 
       da.Fill(dt)
 
       d1.DataSource dt
        
''اما الاخرى لن نربطها عبر الخاصية 
        
' DataSource
        d2.Rows.Clear()
        For Each row As DataRow In dt.Rows
            d2.Rows.Add(row(0), row(1))
        Next
    End Sub
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        gd()
    End Sub
End Class 

العذرة عن الانقطاع بسبب الجهز انضرب بفيروس
 و الشكر لك يا سعوووووووود

طيب في حالة وجود اعمدة من متقرقة و عند عملية الاستعلام بعض الاعمدة تختفي
لماذا تختفي و كيف اسيطر عليها و اجعل العمود لا يختفي
الرد
تم الشكر بواسطة:
#4
(28-11-21, 08:02 AM)غدير الصليحي كتب : طيب في حالة وجود اعمدة من متقرقة و عند عملية الاستعلام بعض الاعمدة تختفي
لماذا تختفي و كيف اسيطر عليها و اجعل العمود لا يختفي

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



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم