[شرح] كيفية التعامل مع أداة 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
التعديل الأخير تم بواسطة خليل سليم ; 28-03-2013 الساعة 06:10 AM
__________________
بريدي :khalilme (at) hotmail.com
مطور: ASP.NET, Windows Phone , Desktop Applications