PDA

View Full Version : سوال: مشکل در DropDown



alireza.tabesh
جمعه 03 خرداد 1392, 14:54 عصر
یک جدول دارم به اسم شرکت های بیمه -> InsuranceCompanies
یک جدول دارم به اسم شعب شرکت های بیمه -> Branchs
یک جدول هم دارم نمایندگان بیمه تحت پوشش شعب -> Agents

حالا وقتی می خوام یک نماینده وارد کنم می خوام اول شرکت بیمه انتخاب بشه وبا انتخاب شرکت بیمه شعبه های زیر مجموعه اون در لیست dropdown بشینه . در حال حاضر همه شعبه ها نمایش داده می شه .
در واقع می خوام بگم : Select BranchName From Branchs Where InsuranceId = x ولی در mvc نمی دونم چطور باید انجامش بدم .
اگر راهنمایی کنید ممنون میشم و یا اگر پروژه مشابه جایی دیدید لینک بدید . متشکرم

forestasphalt
جمعه 03 خرداد 1392, 17:08 عصر
اگه منظورت از لیست DragAndDrop (dropdown) هست توی همین سایت مثال برای پرکردن dropdown ها زیاد هست یا از AjaxControlToolkit استفده کن

p.parsaee
جمعه 03 خرداد 1392, 18:25 عصر
مثالی مشابه رو در لینک زیر می تونید دنبال کنید:
http://www.dotnettips.info/post/1076/%D8%B3%D8%A7%D8%AE%D8%AA-dropdownlist-%D9%87%D8%A7%DB%8C-%D9%85%D8%B1%D8%AA%D8%A8%D8%B7-%D8%A8%D9%87-%DA%A9%D9%85%DA%A9-jquery-ajax-%D8%AF%D8%B1-mvc

mo.esmp
جمعه 03 خرداد 1392, 18:51 عصر
چیزی که شما میخوای Cascade Dropdown هست به اینسورت که توی فرم شما ٣ تا dd هست اولی برای نام شرکتهای بیمه، دومی برای شعبه های شرکت بیمه و سومی برای نمایندگان که هنگام Render شدن سفحه dd اولی Bind میشه و dd دومی با انتخاب یک آیتم از اولی و dd سوم هم با انتخاب یک آیتم از دومی bind میشن. حالا با این تفاسیر شما باید از ajax استفاده کنی.
با فرز اینکه dd اول idش InsuranceCompanies باشه و dd دوم idش Branchs باشه و dd سوم idش Agents باشه:

$('#InsuranceCompanies').change(function () {
var insuranceId = $(this).val();
$.ajax({
url: '@Url.Action("GetBranchs")',
type: 'POST',
data: JSON.stringify({ insuranceId: insuranceId }),
dataType: 'json',
processData: false,
contentType: 'application/json; charset=utf-8',
success: function (branchesList) {
if (branchesList != null) {
var branchsDd = $('#Branchs');
branchsDd.empty();
$.each(branchesList, function (index, branch) {
branchsDd.append(
$('<option />')
.attr('value', branch.BranchId)
.text(branch.Name)
);
});
} else {
alert("علمیات با خطا مواجه شد");
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
});
اما GetBranchs
[HttpPost]
public ActionResult GetBranchs(int insuranceId )
{
var branches = from branch in ctx.Branches Where branch.InsuranceId == insuranceId Select new {Name = branch.Name, BranchId = branch.Id};
return Json(branches, JsonRequestBehavior.AllowGet);
}
و همین روال رو هم میتونی برای dd سوم هم تکرار کنی.

alireza.tabesh
شنبه 04 خرداد 1392, 22:41 عصر
دسست درد نکنه همینو می خواستم

alireza.tabesh
شنبه 11 خرداد 1392, 07:58 صبح
فقط یک مشکل هست و اینکه نمی تونم به تابع ذخیره کنندم پستش کنم

<div id="selectRelation"></div>

<div id="RelationList">

<script type="text/ecmascript">

$.getJSON('/Name/GetRelations', function (data) {

var items = '<select id=srelation>';

$.each(data, function (i, Relations) {

items += '<option>' + Relations.RelationName + '</option>';



});


items += '</select>';

$('#selectRelation').html(items);



});


</script>

</div>

با این کد ها تونستم کارمو انجام بدم ولی برای پست کردن به تابع زیر مشکل دارم:
[HttpPost]

public ActionResult Create(Name name, int relationid)



{

name.RelationId = relationid;


if (ModelState.IsValid)



{

db.Names.Add(name);

db.SaveChanges();


return RedirectToAction("Index");



}


return View(name);



}

alireza.tabesh
شنبه 11 خرداد 1392, 08:07 صبح
<div id="selectRelation"></div>
<div id="RelationList">
<script type="text/ecmascript">
$.getJSON('/Name/GetRelations', function (data) {
var items = '<select id=srelation>';
$.each(data, function (i, Relations) {
items += '<option>' + Relations.RelationName + '</option>';
});
items += '</select>';
$('#selectRelation').html(items);
});
</script>
</div>




[HttpPost]
public ActionResult Create(Name name, int relationid)
{
name.RelationId = relationid;
if (ModelState.IsValid)
{
db.Names.Add(name);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(name);
}