مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

saminova

عضویت از 1395/04/26

cascading select option

  • یکشنبه 23 آبان 1395
  • 01:13
تشکر میکنم

چطوری میتونم با ایتفاده از 3 موجودیت ( جدول ) یک فرم ورود مطلب بسازم که گروه مطلب و دسته بندی بصورت آبشاری باز شود

یعنی با انتخاب گروه دسته بندی های که گروه مادر آنها انتخاب شده در option پایین نمایش داده شود

بصورت ajax اگر امکانش هست توضیح بدین. سپاس

پاسخ های این پرسش

تعداد پاسخ ها : 5 پاسخ
کاربر سایت

kaveh.norozi

عضویت از 1394/11/30

  • یکشنبه 23 آبان 1395
  • 08:34

اول جداولتو بساز و اطلاعات رو داخلش قرار بده ، کلید هارو درست تعریف کن و بعد برای CaseCading به روش زیر عمل کن:

( برای این مثال از جدول NorthWind  استفاده میکنیم)

1) یه پارشال ویو درنظر بگیر برای Category که بصورت زیر باشه

 public PartialViewResult Category()
        {
            var cat = (from item in db.Categories select new SelectListItem { Value = item.CategoryID.ToString(), Text = item.CategoryName }).ToList();
            ViewBag.cat = cat;
            return PartialView();
        }

توضیح : مقدار Category رو بصورت ViewBag ارسال میکنه ، ما میخایم بصورت یه DropDown از این ViewBag استفاده کنیم

2) یه پارشال ویو دیگه بنویس برای DropDown دومی که با استفاده از مورد فیلتر پارشال ویو اولی برای نمایش لیست Product ها باشه

public PartialViewResult Product(int CategoryID)
        {
            var prod = (from item in db.Products
                       where item.CategoryID == CategoryID
                       select new SelectListItem { Text=item.ProductName,Value = item.ProductID.ToString()   }).ToList();
            ViewBag.prod = prod;
            return PartialView();
        }

توضیح : توجه داشته باش، تو پارشال ویو دومی ورودی داره که CategoryID می باشد.

خوب برای هر کدوم از پارشال ویو ها View بساز بصورت Empty و مقادیر پایینو بترتیب تو View های مربوطه قرار بده:

@Html.DropDownList("Category", (List<SelectListItem>)ViewBag.cat, new { @class = "form-control", id = "Category" })

توضیح: این ویو مربوط به پارشال ویو اولیه که یک DropDown می سازه از ViewBag.Cat که پاس دادیم.

@Html.DropDownList("Product", (List<SelectListItem>)ViewBag.prod, new {@class="form-control", id="Product" })

توضیح : همانند بالایی این هم یه ویو Empty که فقط یه Dropdown از ViewBag ما میسازه

خوب حالا کافیه تو صفحه Index یا هرجا که میخای پارشال ویو هارو فراخوانی کنی.

اولی رو بدون DataSend و دومی رو با Datasend و مقدار CategoryID که از انتخاب پارشال ویوی اولی میگیری با استفاده از Ajax بصورت زیر:

<script>
        $(document).ready(function () {
            $("#Category").change(function () {
                var SendingData = "CategoryID=" + $("#Category").val();
                var url = '@Url.Action("Product", "CasCade")';
                $.get(url, SendingData, function (data) {
                    $("#dvProduct").html(data);
                    $(document).on("change", "#Product", function () {
                        //dvOrderDetails
                        var d = "ProductID=" + $("#Product").val();
                        var u = '@Url.Action("OrderDetails", "CasCade")';
                        $.get(u, d, function (rd) {
                            $("#dvOrderDetails").html(rd);
                        });
                    });
                });
            });
        });
    </script>

برای نمایش جستجو ها و DropDown ها یه جدول بصورت زیر بساز

<table class="tbl table table-bordered table-striped table-hover " >
        <tr>
            <td>Category</td>
            <td>
               @Html.Action("Category", "CasCade")
            </td>
        </tr>
        <tr>
            <td>
                Product
            </td>
            <td>
                <div id="dvProduct">
                    <select class="form-control">
                       
                    </select>
                </div>
            </td>
        </tr>
        <tr>
            <td colspan="2">
                Order Details
            </td>
        </tr>
        <tr>
            <td colspan="2">
                <div id="dvOrderDetails"></div>
            </td>
        </tr>
    </table>

کاربر سایت

kamilan

عضویت از 1395/07/18

  • یکشنبه 23 آبان 1395
  • 09:37

سلام من هم همین سوال رو داشتم من میخوام در قالب یک فرم ارسال آگهی باشد و به صورت post ارسال شود.

یک سوال دیگه!!! من میخوام view از دو یا چند Modelپیروی کنه!!!!!به جز View Model یه راه دیگه بگید لطفاااااا heart

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 23 آبان 1395
  • 10:01

بهترین راه همون ViewModel است میتونید از tuple هم استفاده کنید که جالب نیست

کاربر سایت

saminova

عضویت از 1395/04/26

  • یکشنبه 23 آبان 1395
  • 14:09

آگر امکانش هست یک نمونه معرقی کنید که از چند مدل در یک ویو استفاده شده باشد. سپاس.

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 23 آبان 1395
  • 17:16
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)