تغییر صفحه Display Form جهت نمایش آیتم های مرتبط به یک مورد

سلام دوستان

امروز می خواهم در مورد یکی دیگر از تریکهای Data View ها خدمتتون توضیح بدم. قبلا در یکی از پست هایم به برخی از آنها اشاره کردم که برای نمایش اطلاعات بصورت Cross Site بود. در این پست می خواهم در مورد نمایش اطلاعات مرتبط به یک مورد را که بصورت Lookup بهم وصل می باشند در صفحه DispForm.aspx خدمتتون ارائه کنم.

برای مثال من دو تا لیست دارم به نام های Projects و Tasks ، و این دو تا لیست از طریق فیلد نام پروژه در لیست Tasks بصورت Lookup به یکدیگر وصل می باشند. حالا می خواهم وقتی کاربر در لیست Projects بر روی یکی از آیتم ها کلیک می کند تا مشخصات آنرا مشاهده نماید، درهمان صفحه تمام Task های مرتبط با آنرا نیز مشاهده نماید.

clip_image002

خوب همانطور که می دانید صفحه ای که مشخصات یک آیتم را نمایش می دهد DispForm.aspx نام دارد و آنرا می توان از طریق SharePoint Designer باز نموده و در آن تغییراتی را اعمال نمود. قبل از اینکه تغییراتی را در این صفحه اعمال کنید بهتر است تا یک کپی از آن تهیه نمایید.

clip_image004

خوب من صفحه DispForm.aspx مربوط به لیست Projects را باز می کنم و در انتهای صفحه یکweb Part DataView اضافه می نمایم.

clip_image006

حالا باید مشخص کنم که این وب پارت چه اطلاعاتی را نمایش دهد. از قسمت Data Source Library لیست Tasks را انتخاب می کنم و پس از کلیک بر روی آن از طریق گزینه Show Data فیلدهای مورد نظر را انتخاب می کنم و به DataView اضافه می نمایم، به این صورت یک DataView با فیلدهای انتخابی در صفحه DispForm.aspx دارم که البته تمام اطلاعات را نمایش می دهد.

در این مرحله باید کاری کنیم که فقط موارد مرتبط به پروژه انتخاب شده را در DataView نمایش دهد. این کار به این صورت عملی خواهد بود که اطلاعات موجود در DataView را بر اساس ID پروژه انتخاب شده فیلتر نماییم.

clip_image008

خوب الان من باید یک پارامتر برای DataView تعریف کنم. اسم این پارامتر را ProjectID انتخاب می کنم و نوع آنرا QueryString تعیین می نمایم.

clip_image010

در این مرحله باید DataView را بوسیله پارامتر تعریف شده فیلتر نماییم.

clip_image012

ولی مشاهده می کنید که DataView فیلتر نشد و تمام محتوا را نمایش می دهد. خوب کاری که باید در این مرحله انجام دهید این است که در قسمت کد مربوط به DataView کدی را اضافه نمایید. در نمای کد مربوط به DataView به دنبال تگ SPDataSource بگردید.

clip_image014

در داخل این تگ مشخصه ای به نام Select Command وجود دارد که با تغییر آن می توان به محتوای ID دسترسی پیدا نمود. در حالت معمولی محتوای Select Command بصورت زیر می باشد که غیر قابل خواندن می باشد.

clip_image016

من این کد را تغییر داده ام، اگر نگاه کنید متوجه می شوید که همان زبان CAML query می باشد.

clip_image018

در این مرحله اگر به تگ FieldRef مشخصه LookupId را اضافه کنیم و مقدار آنرا برابر ‘True’ قرار دهیم، می توانیم به مقدار Lookup ID دسترسی داشته باشیم.

clip_image020

خوب حالا اگر تغییرات انجام شده را ذخیره نموده و صفحه را اجرا نمایید، مشاهده می کنید که بدرستی کار می کند.

امیدوارم که این پست به دردتان خورده باشد. اگه مشکلی داشتید حتما برام یادداشت بذارید.

پاسخ دهید