PDA

View Full Version : آرشیو ماهیانه



moj
شنبه 19 دی 1383, 23:37 عصر
با سلام خدمت دوستان

من میخواستم یه آرشیو ماهیانه برای اخبار سایت درست کنم

ینی اخبار بصورت ماهیانه بر اساس نام ماه و بصورت کاملا اتوماتیک آرشیو بشن

و وقتی روی ماهش کلیک کردیم تمام اخبار اون ماه نشون داده بشه

اگه کسی کدی در این زمینه داره ما رو هم کمک کنه

ممنون میشم

Vahid_Nasiri
چهارشنبه 23 دی 1383, 14:06 عصر
ساختار دیتابیس شما به چه صورتی است و همچنین تاریخ رو به چه فرمتی ذخیره می کنید؟

Behrouz_Rad
چهارشنبه 23 دی 1383, 14:53 عصر
ماه ها باید یک مشخص داشته باشند.
از 1 تا 12.
با دستور Group By دسته بندی می کنید.
به ازای هر دسته ی ایجاد شده، یک آیتم به DropDownList اضافه کنید.
خاصیت AutoPostBack شی DropDownList باید True باشه.
با انتخاب هر آیتم از DropDownList، مشخه ی ماه رو (1 تا 12) به سرور بفرستید تا پردازش های بعدی بر اساس نام انتخاب شده صورت پذیرد.
موفق باشید.
:wise1:

moj
چهارشنبه 23 دی 1383, 21:49 عصر
آقای نصیری خدمت شما عرض کنم که من یه جدول آرشیو خبر دارم که اخباری رو که

میخام میفرستم به جدول آرشیو در این جدول یه فیلد از نوع datetime

دارم که تاریخ خبر ثبت شده میباشد میدونید که فرمت این فیلد چطوریه

مثلا 1/12/2004 1:30 am

حالا من میخام یه آرشیو بر اساس تاریخ داشته باشم ینی اگه تو آرشیو اخبار دو ماه

قبل است من تو قسمت user این رو داشته باشم

مثلا::
آذر 83
آبان 83

و وقتی رو هر لینک کلیک کردییم اخبار آن ماه که شامل موضوع و عنوان و خلاصه مربوط

به هر خبر است نشان داده بشه

اگه یه لطفی کنین برا راهنمایم ممنون میشم

Vahid_Nasiri
پنج شنبه 24 دی 1383, 13:46 عصر
موضوع ساده ای است اگر با نحوه ی ایجاد ستون های تمپلیت در دیتاگرید آشنا باشید.
یک ستون تمپلیت به دیتاگرید اضافه کنید.
سپس در این ستون یک کنترل هایپرلینک قرار دهید.
برای اینکه هنگام بایند کردن متن آن تاریخ ماه و لینک آن تمام موضوعات ماه باشد می توان هایپرلینک را به صورت زیر مقدار دهی کرد:

کنترل را که در ستون تمپلیت قرار داده شده انتخاب کنید تا پنجره ی خواص آن در سمت راست صفحه ظاهر شود. روی قسمت بایندینگ کلیک کنید تا صفحه ی مربوطه باز شود. اکنون در قسمت navigation آن بنویسید:

"anypage.aspx?id="+DataBinder.Eval((DataGridItem)Container.DataItem, "cust_id")
این cust_id را بعدا ایجاد خواهیم کرد. (در کوئری مورد استفاده برای بایند کردن داده ها به دیتاگرید).
و هر وقت روی این لینک کلیک شد به صفحه ی anypage.aspx هدایت شده و توسط یک کوئری استرینگ مقدار id را که الان تاریخ مورد نظر ماه است ، بر می گرداند.

سپس در همین صفحه ای که الان باز است و مربوط به دیتابایندینگ است خاصیت text را انتخاب کنید و مورد زیر را بنویسید:

"MyFormatFunc(DataBinder.Eval((DataGridItem)Contain er.DataItem, "cust_id"));
در اینجا تابعی به صورت *پابلیک* در سورس صفحه ایجاد خواهیم کرد به نام MyFormatFunc تا تاریخ انگلیسی را دریافت کرده (به عنوان آرگومان ورودی و از نوع Object) و آنرا به معادل فارسی ترجمه کرده و سپس برگردانده تا نمایش داده شود. (این تابع را خودتان خواهید نوشت! و کار ساده ای است. ورودی آن سال و ماه جدا شده از تاریخ های موجود در دیتابیس است. تبدیل آن به معادل فارسی بسیار ساده است.)

اکنون نوبت استفاده از این دیتاگرید خاص است! (که نمایش ستون های آن از حالت اتوماتیک خارج شده (دربرگه ی خواص)) :
تنها کافی است با همان روش های ساده قدیمی یک کوئری ایجاد و سپس به گرید بایند کنید. به صورت خودکار موارد فوق مقدار دهی شده و تیترهای آرشیو ماهانه نمایش داده می شود.
برای ساخت این کوئری ، خیلی ساده قسمت سال و ماه تاریخ را جدا کرده و سپس به صورت distinct آنها را select کنید. همین! برای مثال :

SELECT distinct substring(date_stamp,1,7) as cust_id FROM tbl_journals
(اگر هم خواستید در یک بازه ی زمانی باشد کافی است یک قسمت where هم به کوئری فوق اضافه کنید)

در مورد صفحه anypage.aspx کافی است در هنگام لود آن در روال رخداد مربوطه با استفاده از Request.QueryString ، مقدار ID را خوانده (که الان تاریخ ماه است) و سپس آنرا به عنوان ورودی یک کوئری از دیتابیس برای نمایش دادن اطلاعات یک ماه در یک گریدی دیگر استفاده کنید. (فقط هنگام استفاده از کوئری استرینگ ها حواستان به تزریق اس کیوال خوب باشد... مقاله ای در این زمینه بالای بخش هست.)


موفق باشید.

moj
پنج شنبه 24 دی 1383, 14:26 عصر
اقای نصیری

بسیار متشکرم از ارسال جوابتون

bftarane
سه شنبه 21 آذر 1391, 01:05 صبح
سلام. عبارات زير در پست 5 نوشته شده.

(این تابع را خودتان خواهید نوشت! و کار ساده ای است. ورودی آن سال و ماه جدا شده از تاریخ های موجود در دیتابیس است. تبدیل آن به معادل فارسی بسیار ساده است.)حالا اين کار ساده رو من نتونستم انجام بدم. لطفاً هر کس بلده راهنمايي کنه.
يعني سال و ماه جدا شده از تاريخ اگه 2012 و 12 باشن معادل فارسي شون رو من چه جوري به دست بيارم؟
باز شايد بتونم براي ماه يه کاري کنم (مثلاً با swich case) ولي سال که ديگه اصلاً.