hello good evening everybody I am trying to get data when one of my dropdown selected index change here are my codes I couldn't get where am ı missing or doing something wrong I am very glad if you help me thank you .
this is my script code
$("#ddOrder").change(function (e) {
alert = "basıldı";
var oID = $(this).val();
$.getJSON("../Accessory/loadWorkshops", { _orderId: oID },
function (data) {
var select = $("#ddAcc");
select.empty();
select.append($('<option/>', {
value: 0,
text: "Aksesuar seçiniz"
}));
$.each(data, function (index, itemData) {
select.append($('<option/>', {
value: itemData.Value,
text: itemData.Text
}));
});
});
});
these are my controller codes
public ActionResult addAccessoryShipment()
{
if (Session["_userName"] == null)
{
return RedirectToAction("Index", "Home");
}
HelperPartial _helper = new HelperPartial(
ViewData,
Session["_userName"].ToString(),
Session["_userPermissionId"].ToString()
);
Repository<Order> _ro = new Repository<Order>();
IEnumerable<SelectListItem> _orderSelectListItem = _ro.All().AsEnumerable().Select(s => new SelectListItem
{
Text = s.code,
Value = s.id.ToString()
}).OrderBy(o => o.Text);
ViewData["ddOrder"] = _orderSelectListItem;
Repository<AccessoryList> _ra = new Repository<AccessoryList>();
IEnumerable<SelectListItem> _clothSelectListItem = _ra.All().AsEnumerable().Select(s => new SelectListItem
{
Text = s.name,
Value = s.id.ToString()
}).OrderBy(o => o.Text);
ViewData["ddaList"] = _clothSelectListItem;
return View();
}
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult loadWorkshops(string _orderId)
{
//IEnumerable<MyCustomerProductType> _myCustomerProductType = _rc.All().Select(s => new MyCustomerProductType { id = s.id, customerName = s.customer.name, productTypeName = s.productType.name });
int _oId = Convert.ToInt32(_orderId);
Repository<OrderCloth> _ra = new Repository<OrderCloth>();
IEnumerable<MyOrderCloth> _clothSelectListItem = _ra.All().Where(o => o.orderId == _oId).Select(s => new MyOrderCloth
{
workshopName = s.workshop.name,
workshopId = s.workshopId
});
List<SelectListItem> _workshopListItem = new List<SelectListItem>();
foreach (MyOrderCloth item in _clothSelectListItem)
{
_workshopListItem.Add(new SelectListItem
{
Text = item.workshopName,
Value = item.workshopId.ToString()
});
}
//ViewData["ddwList"] = _workshopListItem;
return Json(_workshopListItem, JsonRequestBehavior.AllowGet);
}
and here are my view codes
@using (Html.BeginForm("AccessoryShipmentAdd", "Accessory", FormMethod.Post))
{
@Html.ValidationSummary(true)
<div class="control-group">
<label class="control-label">Sipariş No</label>
<div class="controls">
@Html.DropDownListFor(model=>model.orderId,(IEnumerable<SelectListItem>)ViewData["ddOrder"],"seçim yapınız",new {id="ddOrder", @class = "span6 chosen"})
</div>
@Html.ValidationMessageFor(model => model.orderId)
</div>
<div class="control-group">
<label class="control-label">Atölye Seçiniz</label>
<div class="controls">
@Html.DropDownListFor(model=>model.workshopId,new SelectList(Enumerable.Empty<SelectListItem>(),"workshopId","workshopName"),"seçim yapınız",new {@id="ddAcc" ,@class = "span6 chosen"})
</div>
@Html.ValidationMessageFor(model => model.workshopId)
</div>
<div class="control-group">
<label class="control-label">Aksesuar Seçiniz</label>
<div class="controls">
@Html.DropDownListFor(model=>model.accessoryListId,(IEnumerable<SelectListItem>)ViewData["ddaList"],"seçim yapınız",new { @class = "span6 chosen"})
</div>
@Html.ValidationMessageFor(model => model.accessoryListId)
</div>
I can get datas from loadWorkshops class but it doesnt return to my dropdown. what can I do for this ?
Try this (change "/>" in option to ">"):
$("#ddOrder").change(function () {
var oID = $(this).val();
$.getJSON("../Accessory/loadWorkshops", { _orderId: oID },
function (resultData) {
var selectACC = $("#ddAcc");
selectACC.empty();
selectACC.append($('<option>', {
value: 0,
text: '-- Aksesuar seçiniz --'
}));
$.each(resultData, function (index, itemData) {
selectACC.append($('<option>', {
value: itemData.Value,
text: itemData.Text
}));
});
});
});
Update your controller to something like this:
//Place the fetching of data in private
private IList<MyOrderCloth> GetClothOrders(int _orderId)
{
Repository<OrderCloth> _ra = new Repository<OrderCloth>();
IList<MyOrderCloth> clothOrders = null;
clothOrders = _ra.MyOrderCloth.Where(o => o.orderId == _orderId).ToList();
return clothOrders;
}
//Accessed by Javascript
[AcceptVerbs(HttpVerbs.Get)]
public JsonResult loadWorkshops(string _orderId)
{
int id = 0;
if (!string.IsNullOrEmpty(_orderId))
{
id = Convert.ToInt32(_orderId);
}
var clothList = GetClothOrders(id);
var clothData = clothList.Select(a => new SelectListItem()
{
Text = a.workshopName.ToString(),
Value = a.workshopId.ToString(),
});
return Json(clothData, JsonRequestBehavior.AllowGet);
}