كيفية التعامل مع أداة Fileupload بداخل أداة Gridview   

في أحيان كثيرة يلزمك وضع أداة Fileupload بداخل حقل TemplateField  في الجريدفيو أو أي أداة مشابهة للجريدفيو، وذلك للقيام بعملية التعديل أو الإضافة. وإليك الطريقة.

سنستخدم أداة جريدفيو ، مع أداة SqlDataSource  وسيكون هنالك عمود على هيئة قالب TemplateField ، وبديهي جدا أن نضع أداتنا ( أداة الرفع ) في بند التعديل بداخل القالب كالمثال

الآن قمنا بضبط عرض الصورة في الجريدفيو وقمنا بضبط عرض الصورة وأداة الرفع في حالة ضغط المستخدم على زر تعديل الجريد فيو.

الآن علينا كتابة كود التعديل ، وهذا يتم في حدث RowUpdating
 وسيكون كالتالي

الكود تقليدي ، قمنا بجلب أداة الرفع من السطر المختار
ثم استعديت دالة برمجتها سابقا تقوم برفع الملف وإرجاع اسمه لأستخدمه لاحقا
ثم حذفت الصورة القديمة لأني رفعت صورة بدلا منها.
الخيار لك في طريقة كتابة الكود ولكن ما يهم في السطر الأخير ، حيث يهمك أن ترسل اسم الملف الجديدة كوسيطة إلى العمود الذي تريد التعديل إليه ، مثلا سأعدل على عمود اسمه Picture ، فسيكون السطر كالتالي
e.NewValues("Picture") = imgname

الآن كل شيء تمام ، ولكن يبقى أمر أخير ، وهو ماذا لو قام بالتعديل على الصف في الجريد فيو ولكن لم يرغب بأن يرفق ملف جديد ( وفي حالتي صورة جديدة ) !
عندها سيتم استبدال اسم الملف في القاعدة بقيمة فارغة NULL  ، وهنا يجب إجراء تعديل على جملة التعديل في SqlDataSource ، ويجب توقع القيمة الفارغة فبدلا من أن تكون الجملة مشابهة ل
UPDATE [Departments] SET [Name] = @Name, Picture=@Picture  where id=@id
ستصبح مشابهة ل
UPDATE [Departments] SET [Name] = @Name, Picture=isnull(@Picture,Picture) where id=@id

بالتوفيق للجميع

<

About the author

خليل سليم

Leave a Comment

هذا الموقع يستخدم Akismet للحدّ من التعليقات المزعجة والغير مرغوبة. تعرّف على كيفية معالجة بيانات تعليقك.