سلام دوستان
امروز می خواهم در مورد یکی دیگر از تریکهای Data View ها خدمتتون توضیح بدم. قبلا در یکی از پست هایم به برخی از آنها اشاره کردم که برای نمایش اطلاعات بصورت Cross Site بود. در این پست می خواهم در مورد نمایش اطلاعات مرتبط به یک مورد را که بصورت Lookup بهم وصل می باشند در صفحه DispForm.aspx خدمتتون ارائه کنم.
برای مثال من دو تا لیست دارم به نام های Projects و Tasks ، و این دو تا لیست از طریق فیلد نام پروژه در لیست Tasks بصورت Lookup به یکدیگر وصل می باشند. حالا می خواهم وقتی کاربر در لیست Projects بر روی یکی از آیتم ها کلیک می کند تا مشخصات آنرا مشاهده نماید، درهمان صفحه تمام Task های مرتبط با آنرا نیز مشاهده نماید.
خوب همانطور که می دانید صفحه ای که مشخصات یک آیتم را نمایش می دهد DispForm.aspx نام دارد و آنرا می توان از طریق SharePoint Designer باز نموده و در آن تغییراتی را اعمال نمود. قبل از اینکه تغییراتی را در این صفحه اعمال کنید بهتر است تا یک کپی از آن تهیه نمایید.
خوب من صفحه DispForm.aspx مربوط به لیست Projects را باز می کنم و در انتهای صفحه یکweb Part DataView اضافه می نمایم.
حالا باید مشخص کنم که این وب پارت چه اطلاعاتی را نمایش دهد. از قسمت Data Source Library لیست Tasks را انتخاب می کنم و پس از کلیک بر روی آن از طریق گزینه Show Data فیلدهای مورد نظر را انتخاب می کنم و به DataView اضافه می نمایم، به این صورت یک DataView با فیلدهای انتخابی در صفحه DispForm.aspx دارم که البته تمام اطلاعات را نمایش می دهد.
در این مرحله باید کاری کنیم که فقط موارد مرتبط به پروژه انتخاب شده را در DataView نمایش دهد. این کار به این صورت عملی خواهد بود که اطلاعات موجود در DataView را بر اساس ID پروژه انتخاب شده فیلتر نماییم.
خوب الان من باید یک پارامتر برای DataView تعریف کنم. اسم این پارامتر را ProjectID انتخاب می کنم و نوع آنرا QueryString تعیین می نمایم.
در این مرحله باید DataView را بوسیله پارامتر تعریف شده فیلتر نماییم.
ولی مشاهده می کنید که DataView فیلتر نشد و تمام محتوا را نمایش می دهد. خوب کاری که باید در این مرحله انجام دهید این است که در قسمت کد مربوط به DataView کدی را اضافه نمایید. در نمای کد مربوط به DataView به دنبال تگ SPDataSource بگردید.
در داخل این تگ مشخصه ای به نام Select Command وجود دارد که با تغییر آن می توان به محتوای ID دسترسی پیدا نمود. در حالت معمولی محتوای Select Command بصورت زیر می باشد که غیر قابل خواندن می باشد.
من این کد را تغییر داده ام، اگر نگاه کنید متوجه می شوید که همان زبان CAML query می باشد.
در این مرحله اگر به تگ FieldRef مشخصه LookupId را اضافه کنیم و مقدار آنرا برابر ‘True’ قرار دهیم، می توانیم به مقدار Lookup ID دسترسی داشته باشیم.
خوب حالا اگر تغییرات انجام شده را ذخیره نموده و صفحه را اجرا نمایید، مشاهده می کنید که بدرستی کار می کند.
امیدوارم که این پست به دردتان خورده باشد. اگه مشکلی داشتید حتما برام یادداشت بذارید.