دسته بندی ها
13:34 1400/05/04

نمایش کمبوباکس شهر و استان در یک جدول در Asp.net core

مشخصات سوال کننده :
کاربر : hastia     امتیاز کاربر : 1     رتبه کاربر : 150
دسته بندی : Asp.net Core جی کوئری

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 5146
پاسخ دهنده : pedram_khan 18:10 1400/05/04

اگر هدف شما این هست که با انتخاب DropDownList مربوط به استان، لیست شهرهای اون استان در DropDownList بعدی نمایش داده بشه، شما خیلی راحت میتونید این کار رو از طریق دستورات جی کوئری و Ajax انجام بدید. ببینید روشی که شما انتخاب کردید کلا Server Side هست و با انتخاب استان از تگ Select اول یکبار صفحه رفرش میشه تا لیست شهرها نمایش داده بشه و در این صورت مقدار استان از بین میره.

شما باید حتما از Jquery Ajax استفاده کنید برای این منظور.

 

نمایش کمبوباکس شهر و استان در یک جدول توسط جی کوئری

ابتدا دو تگ Select در View خودتون قرار بدید. یکی برای نمایش لیست استان ها و یکی هم برای نمایش لیست شهرها. سپس از سمت کنترلر لیست استان ها رو در تگ select مروبط به استان ها نمایش بدید. به کدهای زیر دقت کنید :

کدهای سمت Controller

public IActionResult Index()
{
   List<Province> ListProvice = _db.provinceTbl.ToList();
   ViewBag.ListPrv = ListProvice;
   return View();
}

در کدهای بالا Provience همان جدول استان ها می باشد. شما میتونید اگر یک جدول دارید مطابق با جدول خودتون لیست استان ها رو استخراج کنید.

 

کدهای سمت View

@{ 
    List<Province> ProvinceList = ViewBag.ListPrv;
}

<!--استان-->
<div class="form-group">
      <select id="sltProvince" asp-items="@(new SelectList(ProvinceList,"ID","ProvinceName"))"></select>
   <label>انتخاب استان</label>
</div>

<!--شهر-->
<div class="form-group" id="divcity">
      <select id="cityid"></select>
   <label>انتخاب شهر</label>
</div>

خب در کدهای بالا وقتی شما پروژه رو Run می کنید لیست استان ها نمایش داده میشه. اما حالا باید با انتخاب هر استان لیست شهرهای مربوطه هم نمایش داده بشه. برای این کار میتونید از جی کوئری کمک بگیرید. بنابراین در ادامه داریم :

<script>
        $("#sltProvince").on('change', function (e) {
                var getid = $('#sltProvince').val();
                $.ajax({
                    type: 'post',
                    url: '@Url.Action("getCity","Home")',
                    data: { id: getid },
                    success: function (result) {
                        if (result.status == "success") {
                            $('#cityid').empty();
                            $.each(result.cityList, function (i) {
                                $('#cityid').append($("<option></option>")
                                    .val(result.cityList[i].id).html(result.cityList[i].cname));
                            });
                        }
                    }
                });
        });
</script>

در دستورات جی کوئری بالا به محض اینکه یک استان جدید از لیست انتخاب می شود رویداد change اجرا می شود و ID استان جدید را دریافت می کند و به سمت کنترلر Home و متد getCity ارسال می کنید. در این متد هم لیست شهرهایی با ID برابر با آیدی استان برگردانده می شود و در تگ select مربوط به شهر نمایش داده می شود.

 

[HttpPost]
public IActionResult getCity(int id)
{
   var cityList = _db.cityTbl.Where(c => c.ProvinceID == id)
      .Select(c => new { id = c.ID, cname = c.CityName }).ToList();
   return Json(new { status = "success", cityList });
}

 

مثال بالا رو سعی کردم ساده و کامل براتون توضیح بدیم. اگر هنوز هم مشکلی دارید این فیلم آموزشی که کامل توضیح داده رو دانلود کنید.

نمایش کبوباکس های استان و شهر توسط جی کوئری

به این پاسخ امتیاز بدهید    2
امتیاز: 274 رتبه: 6
5 نظر
hastia : پاسخ رو update کردم ببینید لطفا

امتیاز کاربر : 1   رتبه کاربر : 150   تاریخ ثبت : 11:04 1400/05/05
pedram_khan : نیازی به ویرایش سوال نبود. بنده پاسخ رو کامل گفتم دیگه.

امتیاز کاربر : 274   رتبه کاربر : 6   تاریخ ثبت : 12:05 1400/05/05
hastia : با سلام من بالاخره تونستم نمایش شهر و ساتان رو اوکی کنم. اما الان یه مشکلی دارم . این locationId یک عدد میشه در نهایت توی جدول.حالا من برای نمایش این توی ادمیت چطوری باید شهرو استان رو جدا نشون بدم و واکشی کنم .؟ که شهر بره توی قسمت سلکت لیست شهر ؛ استان بره توی استان؟

امتیاز کاربر : 1   رتبه کاربر : 150   تاریخ ثبت : 03:13 1400/05/09
saedbfd : پاسخ به hastia : لطفا اشکالی رو که دارید به صورت کامل و جامع توی یک سوال مجزا مطرح بفرمایید تا همه بتونن بررسی کنن و پاسخ بدن. توی نظر سوال پرسیدن کسی زیاد سوالتون رو نمیبینه و پاسخ نمیگیرید.

امتیاز کاربر : 1654   رتبه کاربر : 1   تاریخ ثبت : 00:33 1400/05/10
zkooch : با سلام لطفا در مورد result توضیح بدید ؟آیا به جای آن نباید از data استفاده نمود

امتیاز کاربر : 0   رتبه کاربر : 7016   تاریخ ثبت : 00:02 1400/08/04
ادامه نظرات ...
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود