سنستخدم أداة جريدفيو ، مع أداة 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
بالتوفيق للجميع
<