PDA

View Full Version : drop down های داینامیک



behzadk
یک شنبه 10 اسفند 1393, 15:09 عصر
با سلام
تو mvc می خوام چند تا drop down رو به صورت سلسله مراتبی ایجاد کنم مثلا
استان -شهرستان -بخش-شهر و ...
و هر کدام از این ها از کلاس دیگری گرفته می شوند
و در آخر هر کدام از اینها در database ذخیره خواهند شد
حالا بهترین راه برای ایجاد چنین چیزی چه هست ؟
با تشکر

r4hgozar
یک شنبه 10 اسفند 1393, 16:45 عصر
سلام.
http://stackoverflow.com/questions/22218079/loading-dropdown-list-with-data-from-table-in-mvc4
https://code.msdn.microsoft.com/Cascading-DropDownList-in-833683f9

aroshanzamir
یک شنبه 10 اسفند 1393, 19:07 عصر
سلام وقت شما بخیر : من برای استان و شهرستان می گم خودت برای مابقی توسعه بده :

یک کلاس شهر داریم :

public class City
{
public int Id { get; set; }
public string Name { get; set; }
public int Id_Parent { get; set; }
}


کلاس استان :

public class Province
{
public int Id { get; set; }
public string Name { get; set; }
}


یک منبع داده فرضی :

public class Repository
{
public List<Province> GetAllProvince()
{
return new List<Province>
{
new Province { Id=1, Name="Fars"},
new Province { Id=1, Name="Tehran"},
new Province { Id=1, Name="Esfahan"},
new Province { Id=1, Name="Khorasan"}
};
}




public List<City> GetAllCity(int Id)
{
//با توجه به مقدار دریافتی متد به دیتا بیس متصل شده واطلاعات مورد نظر واکشی شود
return new List<City>
{
new City { Id=1, Name="Fasa", Id_Parent=1},
new City { Id=2, Name="Shiraz", Id_Parent=1},
new City { Id=3, Name="Firozabad", Id_Parent=1},
new City { Id=4, Name="Jahrom", Id_Parent=1}
};
}
}




یک کنترولر با نام Home ایجاد می کنید و به دو ViewBag مقدار می دهیم :

public ActionResult Index()
{
ViewBag.Province = new SelectList(new Repository().GetAllProvince(), "Id", "Name");
ViewBag.City = new SelectList(new List<City> { }, "Id", "Name");
return View();
}


public JsonResult SearchProvince(int Id)
{
//شما بر روی پایگاه داده سرچ بزنید با آی دی گرفته شده از وردی
//من از یک منبع داده پیش فرض استفاده می کنم


return Json(new Repository().GetAllCity(Id), JsonRequestBehavior.AllowGet);
}




در View :


<div class="row">
<div class="col-md-12">
@Html.DropDownListFor(x => x.province.Id, (SelectList)ViewBag.Province,
"plese select a province",
new { id = "provinceDropdown" })


@Html.DropDownListFor(x => x.city.Id, (SelectList)ViewBag.City, "plese select a city",
new { id = "cityDropdown" })


</div>
</div>



کد جی کوئری :

زمانی که لیست کشویی اول تغیر پیدا کرد(change) میره از سمت سروز و اطلاعات مربوط لیست کشویی دوم را میاره که با توجه به Id دریافتی مباشد که در این مثال من از یک منبع داده ای پیش فرض استفاده کرده ام :


<script type="text/javascript" lang="en">
$(document).ready(function () {


jQuery("#provinceDropdown").change(function () {
$("#cityDropdown").empty();
jQuery.getJSON("@Url.Action("SearchProvince", "home")",
{ Id: $(this).val() }, function (data) {


jQuery.each(data, function (i) {
var option = $('<option></option>').attr("value", data[i].Id).text(data[i].Name);
$("#cityDropdown").append(option);
});
});
});
});
</script>



تمام !

کد نامفهمومی نداره که بخواهم توضیح بدم هر جاش متوجه نشدی بگو تا توضیح بدم
/ بازهم مشکلی بود مثالش را نوشتم بگو تا آپلودش کنم

موفق باشی

greenkit
یک شنبه 18 مرداد 1394, 00:31 صبح
با سلام
چطور میتونم لیست کشویی شبیه به این برا مطالبم درست کنم؟
http://farsi-nopcommerce.ir/%D8%A7%D9%85%DA%A9%D8%A7%D9%86%D8%A7%D8%AA

bahare0438
شنبه 23 آبان 1394, 10:02 صبح
سلام.اگر بخایم تو دراپ دان لیست دوم کاربر بتونه چند تا گزینه رو انتخاب کنه چطور باید عمل کرد؟