(14-05-19, 01:30 AM)elgokr كتب :وعليكم السلام ورحمة الله وبركاته
اولاً الموضوع المشار اليه يخص قسم VB.NETبينما انت فتحت السؤال بقسم C#
فهنا عند الاجابة عليك اجب عن اى لغة![]()
ثانياً على اى حال اخي الحبيبالرد البسيط لحل هذه المشكلة هو ان تجعل البحثعن طريق قاعدة البيانات لاعادة ارسال DT الى الداتا جريدوليس من خلال عمل فلتر للداتا جريد نفسهاوالسبب يرجع ان عملية فتح الملف يتم من خلال التعامل مع DTوليس الداتا جريد التى تعرض البيانات
لاحظ هنا السطر التالى فى المشروع
كود :
' تحويل الكود المسجل بقاعدة البيانات الى ملف
Dim ff() As Byte = CType(dt.Rows(DgId)(3), Byte())
ستجد dt.Rows وليس dataGridView1
ثانياً قيمة DgId والتى يتم تعبئتها فى هذا الحدث
كود :
Private Sub dataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles dataGridView1.CellClick
' اعطاء المتغيير المعرف من نوع رقم قيمة رقم الصف
DgId = e.RowIndex
End Sub
ويتم عند الضغط على اى خلية لتحديد رقم سطر الخلية وارسالهاقبل اتمام الضغط على زر فتح الملف
فهنا عملية الفلتر فى الداتا جريد عند البحثغير صحيحة تماماً لان الفلتر فى الداتا جريد سيعطى ان اجالى النتيجة البحث 4 بيانات مثلاًبينما فى dt يوجد بها 12 بيان مثلاً
وعنا عند تحديد فتح رقم 2 قد تكون هنا مكنها فى dt رقم 8فستجد ان 2 و 8 مختلف تماماً
طيب لاتمام البحث ماذا عليك ان تفعل
ستقوم بوضع الـ Sub التالى
كود :
Private Sub GetSearchData(myText As String)
' تفريغ DT
dt.Clear()
' جلب البيانات من قاعدة البيانات
cmd = New SqlCommand("select * from TB_File WHERE name='" & myText & "'", con)
Da = New SqlDataAdapter(cmd)
Da.Fill(dt)
' تعبئة الداتا جريد بالبيانات التى تم تعبئتها
dataGridView1.DataSource = dt
' تسمية الاعمدة فى الداتا جريد
dataGridView1.Columns(0).HeaderText = "ID"
dataGridView1.Columns(1).HeaderText = "File Name"
dataGridView1.Columns(2).HeaderText = "File Extension"
' اخفاء العمود الاخير تجنباً من ظهور رسالة اخطاء
' خصوصاً اذا كان الملف المرفق ليس صورة
dataGridView1.Columns(3).Visible = False
End Sub
لا تنسى التعديل على المسميات فى كود الاستعلام / البحث
الخاص بهذا الجزء
كود :
"select * from TB_File WHERE name='" & myText & "'"
الان بعد الانتهاء ستذهب الى حدث البحث
وتقوم بوضع السطر التالى مع تغيير TextBox1 الى ما لديك من مسمى
كود :
GetSearchData(textBox1.Text)
بكده ستجد انه يعمل معك تماماً وبدون مشكلةطيب لو كنت عايز اعمل البحث بحيث عند مسح نص البحث من TextBoxليعود نتائج كل ما فى الجدول مثل البداية
تعال على كود الاستعلام اللى اشرت عليه بالاعلى وهو
كود :
"select * from TB_File WHERE name='" & myText & "'"
واجعله بهذا الشكل
كود :
"select * from TB_File WHERE name LIKE '%" & myText & "%'"
بات الامر بسيط الان وواضح كيف يتم البحثوعمل المشروع معك بصورة صحيحة بدون هذا الخطاء
قمت بشرح الكود بـ VB.NETبسبب الرابط المشار اليه يخص هذا القسم
وفى انتظار توضيح ما لديك هو VB.NET ام C#حتى يتم نقل الموضوع او وضع نفس الشرح ولكن بكود C#
تحياتى لكوتمنياتى لك التوفيق
المتألق دائما elgokr
شكراً جداً ليك
انا مستخدم نفس الكود بتاعك فى مشروع ليا علي السي شارب مش الدونت نت
كل الحكايه اخدت نفس الكود ولكن ضفت فيه خاصيه البحث عملت تيكست بوكس وعملت اجراء مخزن علشان البحث
ف كان بيحصل اللى قولتلك عليه
لو ينفع تشرح الموضوع بالسي شارب يبقي كتر الف مليون خيرك
وتانى مره مليون شكر ليك
