منو
Server Side Client Side

tree یکی از دستورات n بعدی است که برای چاپ ساختارهای چند لایه و درختی (مانند منوها، sidebar و دسته بندی) مناسب میباشد. این دستور بسیار به view شبیه است، با این تفاوت که محدودیتی در تعداد level های آن وجود ندارد.

تگ های الزامی برای چاپ اطلاعات در صفحه: {##db.basis.value##} | {##db.face.value##}

{##db.basis.value##}

Attributeهای الزامی {##db.basis.value##} :

core : برای نمایش ساختارهای درختی باید از tree استفاده نمود.

datamembername : نام جدول خروجی

idcol : براﺑﺮ ﺑﺎ ﻧﺎم ﺳﺘﻮن آي دي رﻛﻮردﻫﺎ در ﺟﺪول ﻗﺮار ﮔﻴﺮد، در اﻳﻦ ﻣﺜﺎل آي دي دﺳﺘﻪ ﻫﺎ در ستون catid قرار میگیرد، بنابراین idcol را ﺑﺮاﺑﺮ ﺑﺎ catid ﻗﺮار ﻣﻴﺪﻫﻴﻢ.

parentidcol : برابر ﺑﺎ ﻧﺎم ﺳﺘﻮﻧﻲ است ﻛﻪ آي دي ﭘﺪر ﻣﺮﺑﻮط ﺑﻪ رﻛﻮردﻫﺎ در آن ﺛﺒﺖ ﺷﺪه اﺳﺖ. در اﻳﻦ ﻣﺜﺎل آي دي ﻣﺮﺑﻮط parent در فیلد parented قرار گرفته است. بنابراین parentidcol را برابر با parentid قرار میدهیم.

nullvalue : آن را برابر با آی دی فیلدی که میخواهیم زیرمجموعه های آن را نمایش دهیم قرار میدهیم.

{##db.face.value##}

این تگ، یک تگ تکرار شونده است و با اجرای این کد، به تعداد ردیف های جدول خروجی، تکرار شده و اطلاعات بر اساس کدهای html موجود در آن، در صفحه سایت چاپ میشود.

ﺑﺮای ﻣﺜﺎل اﮔﺮ ﺟﺪول ﺧﺮوﺟﯽ اﻃﻼﻋﺎت ﺑﺼﻮرت زﯾﺮ ﺑﺎﺷﺪ :

treeTable

برای چاپ اطلاعات هر ستون از جدول خروجی، باید در بخش مورد نظر نام فیلد جدول را نوشته و قبل از آن @ قرار داد.

Attributeهای اختیاری {##db.face.value##} :

level : اﻃﻼﻋﺎت ﻻﻳﻪ ﻫﺎي ﻣﺨﺘﻠﻒ اﻳﻦ ﺳﺎﺧﺘﺎر درﺧﺘﻲ به اصطلاح face ﻣﻴﺸﻮﻧﺪ. در ﺻﻮرﺗﻴﻜﻪ {##db.face.value##} ﻧﻮﺷﺘﻪ ﺷﺪه ﻣﺮﺑﻮط ﺑﻪ ﻧﻤﺎﻳﺶ آﺧﺮﻳﻦ ﻻﻳﻪ از اﻳﻦ ﺳﺎﺧﺘﺎر درﺧﺘﻲ باشد، level را ﺑﺮاﺑﺮ ﺑﺎ end ﺑﻪ ﻣﻌﻨﺎي لایه پایانی ﻗﺮار ﻣﻴﺪﻫﻴﻢ، ﻳﻌﻨﻲ رﻛﻮردﻫﺎﻳﻲ ﻛﻪ داراي فرزند نیستند در "level="end قرار میگیرند.
{##db.face.value##}ﻫﺎي ﻧﻮﺷﺘﻪ ﺷﺪه در {##db.basis.value##} ﺑﻪ ازاي ﻫﺮ رﻛﻮرد ﻳﻜﺒﺎر اﺟﺮا ﻣﻴﺸﻮﻧﺪ، ﭘﺲ اﺑﺘﺪا {##db.face.value##} ﻣﺮﺑﻮط ﺑﻪ ﻻﻳﻪ ي ﭘﺎﻳﺎﻧﻲ را ﻣﻴﻨﻮﻳﺴﻴﻢ و ﺳﭙﺲ {##db.face.value##} ﻣﺮﺑﻮط ﺑﻪ ﻻﻳﻪ ﻫﺎي دیگر را ، ﺗﺎ در ﺻﻮرﺗﻴﻜﻪ ﻳﻚ رﻛﻮرد در ﻻﻳﻪ end ﻗﺮار داﺷﺘﻪ ﺑﺎﺷﺪ اﺑﺘﺪا {##db.face.value##} ﻣﺮﺑﻮط ﺑﻪ آن اﺟﺮا ﺷﻮد و وارد ﻓﻴﺲ ﺑﻌﺪي ﻧﺸﻮد.
در صورتیکه {##db.face.value##}، مربوط به لایه پایانی نباشد، خود نیز دارای فرزند بوده و لازم است در {##db.face.value##} برای ادامه پیدا کردن این ساختار درختی و چاپ لایه های بعدی، child@ را قرار دهیم تا فرزندان این رکورد با اجرای مجدد {##db.face.value##}ها در این بخش قرار گیرند. (این مورد بصورت داینامیک تا آخرین لایه ساختار درختی را چاپ خواهد کرد.) این {##db.face.value##} نیازی به level ندارد.

نمونه کد:

 
 
 
 
مشاهده نتیجه

در صورتیکه بخواهیم برای levelهای مختلف یک ساختار درختی که تعداد آن ها از قبل مشخص است، دیزاین های متفاوت قرار دهیم، میتوانیم بجز level="end" ،level های دیگر نیز تعریف کنیم و در {##db.face.value##}های مربوطه (level="2" ، level="1" ، ...) htmlهای متفاوت قرار دهیم.

Attributeهای اختیاری {##db.face.value##} :

filter : با استفاده از این مشخصه میتوان برای چاپ اطلاعات در صفحه ، شرط هایی را تعریف نمود که با تمام شروط منطقی ، از قبیل > ، < ، = ، and ، or سازگاری دارد.
برای مثال میتوانیم شرطی قرار دهیم که فقط دسته هایی که دارای لینک هستند، چاپ شوند.

نمونه کد:

 
 
 
 
مشاهده نتیجه

ﻳﻚ ﺗﮓ میتواند ﺑﻴﺶ از ﻳﻚ ﺷﺮط داﺷﺘﻪ ﺑﺎﺷﺪ.

هر {##db.basis.value##} میتواند 2 تا n تگ face داشته باشد.

درﺻﻮرﺗﻴﻜﻪ ﭼﻨﺪ face داﺷﺘﻪ ﺑﺎﺷﻴﻢ ، اﻳﻦ {##db.face.value##} ها در هر level به ترتیب اﺟﺮا ﻣﻴﺸﻮﻧﺪ و درﺻﻮرﺗﻴﻜﻪ رﻛﻮردي ﺑﻪ اوﻟﻴﻦ {##db.face.value##} ﺑﺮﺳﺪ و شرط آن ﺑﺮﻗﺮار ﺑﺎﺷﺪ ، اجرا میشود و وارد {##db.face.value##} های بعدی ﻧﻤﻴﺸﻮد .ﭘﺲ در ﺻﻮرﺗﻴﻜﻪ دو {##db.face.value##} ﻳﻜﻲ ﺑﺎ ﺷﺮط و دﻳﮕﺮي ﺑﺪون شرط وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ، ﺑﺎﻳﺪ {##db.face.value##} ﻛﻪ داراي ﺷﺮط اﺳﺖ ﺑﺎﻻﺗﺮ قرار گیرد.

نمونه کد:

 
 
 
 
مشاهده نتیجه

rowtype : نوع دیگری از شرط است و میتواند مقدار odd و even بگیرد. برای نمایش متفاوت رکورد های زوج و فرد میتوان از این مشخصه استفاده نمود.

نمونه کد:

 
 
 
 
مشاهده نتیجه

تگ های اختیاری برای چاپ اطلاعات در صفحه: {##db.layout.value##} | {##db.elayout.value##}

{##db.layout.value##}

این تگ داخل {##db.basis.value##} قرار میگیرد و درصورتیکه حداقل یکی از {##db.face.value##} های قرار گرفته در {##db.basis.value##} پاسخی داشته باشد، محتوای {##db.layout.value##} تنها یکبار چاپ خواهد شد. میتوان از این تگ برای چاپ یک تیتر در ابتدای خروجی {##db.face.value##} ها استفاده کرد. برای اینکه محتوای {##db.face.value##} ها در بخش مناسب و در ادامه محتوای {##db.layout.value##} ، چاپ شود باید در {##db.layout.value##} و در بخش مناسب از child@ استفاده نمود. خروجی {##db.face.value##} ها بجای child@ جایگزین خواهد شد.

نمونه کد:

 
 
 
 
مشاهده نتیجه

{##db.elayout.value##}

درصورتیکه با توجه به اطلاعات جدول خروجی و شرایط تعیین شده در {##db.face.value##} ها، رکوردی برای چاپ وجود نداشته باشد، بجای اطلاعات {##db.layout.value##} اطلاعات موجود در {##db.elayout.value##}، چاپ خواهد شد.

نمونه کد:

 
 
 
 
مشاهده نتیجه
نمونه‌های انجام شده با دستور Tree
ویدیوهای مرتبط مشاهده ویدیوهای بیشتر