فیلتر دوره ها

MehdiYardiar

عضویت : 1397/03/24 پرسش ها : 26 پاسخ ها : 9

فیلتر دوره ها

ارسال شده در : ‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۰:۳۳

با عرض سلام خدمت استاد گرامی 

در قسمت آرشیو دوره ها اگر بخواهیم دوره ها را بر اساس فیلترهایی مثل محبوبترین دوره ها و ... فیلتر گذاری کنیم بنده به این صورت عمل کردم :

<form action="/course" method="get" id="filterArchive">
    <select name="orderBy" id="orderBy" onchange="this.form.submit()">
       <option selected="selected" value="0">مرتب سازی بر اساس :</option>
       <option selected="@((ViewBag.sort=="1"?"selected":""))" value="1">تاریخ انتشار</option>
       <option selected="@((ViewBag.sort=="2"?"selected":""))" value="2">عنوان</option>
    </select>
</form>

و در کنترلر مورد نظر نیز به این صورت عمل کردم : 

public IActionResult Index(int pageId = 1, string search = "", string sort = "0", string orderBy = "0")
       {
            ViewBag.pageId = pageId;
            ViewBag.search = search;
            ViewBag.sort = sort;
            ViewBag.orderBy = orderBy;
            return View(_articleService.GetArticles(pageId, search, sort, orderBy));
        }

و در پایان در سرویس مورد نظر با کمک دستورات switch case به صورت زیر دوره ها را فیلتر کردم : 

switch (orderBy)
            {
                case "1":
                    {
                        articles = (from rows in articles orderby rows.ReleaseDate descending select rows);
                        break;
                    }
                case "2":
                    {
                        articles = (from rows in articles orderby rows.Title descending select rows);
                        break;
                    }
                default:
                    {
                        break;
                    }
            }

دو تا مشکل در صفحه آرشیو وجود دارد اول اینکه به صورت پیشفرض فیلترها باید بر روی "مرتب سازی بر اساس" قرار بگیرد که نمیگیرد و مشکل دوم وقتی یکی از optionsها انتخاب میشود و فرم سابمیت میشه اطلاعات به درستی فیلتر میشن ولی کمبو باکس هنوز بر روی مقدار قبلی خود قرار دارد با اینکه از طریق viewbag مقدار دهی میشه

ممنون میشم پاسخ بدین! 

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 8093
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۱:۰۴

سلام 

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

با viewdata یا viewbag

0 تشکر

MehdiYardiar

عضویت : 1397/03/24 پرسش ها : 26 پاسخ ها : 9
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۱:۳۲

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

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 8093
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۱:۳۶

viewbag را cast کنید و تست کنید 

0 تشکر

MehdiYardiar

عضویت : 1397/03/24 پرسش ها : 26 پاسخ ها : 9
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۱:۴۱

cast کردم استاد ولی جواب نداد حرف حساب حالیش نیس!!!

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 8093
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۱:۴۲

مقدار در view بررسی کنید ببینید درسته 

دیباگ کنید ببینید در ویو اصلا مقدار داره 

0 تشکر

MehdiYardiar

عضویت : 1397/03/24 پرسش ها : 26 پاسخ ها : 9
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۱:۴۷

بله استاد خدمتتون عرض کردم مقادیر درست به ویو ارسال میشه و در ویو هم مقدار داره ولی در کمبو باکس باز روی حات قبلی انتخاب قرار میگیره

حتی یه متغییر خارج کمبو تعریف کردم و مقدار viebag را داخلش ریختم و متغییر را داخل کمبو قرار دادم بازم درست نشد.

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 8093
ارسال شده در :‫۵ ماه قبل، سه شنبه ۱۸ تیر ۱۳۹۸، ساعت ۱۱:۵۱
ViewBag.YearsList = Enumerable.Range(2000, 15)
    .Select(g => new SelectListItem 
    { 
        Value = g.ToString(),
        Text = g.ToString(),
        Selected = (g == currentlySelectedIndex)
    }).ToList();

 

<select name="selectedYear" asp-items="yearsList"></select>

 

0 تشکر

برای ارسال پاسخ باید وارد شوید و یا در سایت عضو شوید