2012-10-01 217 views
0

我有一个2 dropdownlist,我必须绑定第二个基于我从第一个下拉得到的Id。在第一个下拉列表中我添加了OnChange事件。jquery ajax绑定下拉列表MVC

function onChange() { 
    var variantDropDown = $('#VariantName'); 
    $.ajax({ 
      url: '/Admin/CustomProductPinCodesManagement/GetProductVarinats', 
      type: 'post', 
      data: { productId: $("#ProductName").data("tDropDownList").value() }, 
         success: function (data) { 
          $.each(variants, function (i, variant) { 
           $states.append('<option value="' + variant.Id + '">' + variant.Name + '</option>'); 
      }); 
     }, 
     error: function() { 
      alert('Error'); 
     } 
    }); 
} 

这是c#代码。

[HttpPost] 
public ActionResult GetProductVarinats(string productId) 
{ 
    var variants = _productService.GetProductVariantsByProductId(Convert.ToInt32(productId)); 
    return Json(new { Result = true, data = variants }, JsonRequestBehavior.AllowGet); 
} 

但它不起作用。

+0

我知道这是旧的,但你的行动应该可能不是一个帖子。 –

回答

0

val()value()

更改声明

data: { productId: $("#ProductName").data("tDropDownList").value() } 

data: { productId: $("#ProductName").data("tDropDownList").val() } 

和成功应该像

success: function (data) { 
    //For getting list of variants, you should access it by `data.data.variants` 
    //because you will get your json object in data, and for getting the value `variants` 
    //you should capture the `data` property of returned json object like `data.data` 

    $.each(data.data.variants, function (i, variant) { 

    $states.append('<option value="' + variant.Id + '">'+ variant.Name + '</option>'); 

    //you can try this also for creating options 
    //$states.append($('<option/>').text(variant.Name).attr('value',variant.Id)); 
    }); 
} 

所以你的功能应该看起来像:

function onChange() { 
    var variantDropDown = $('#VariantName'); 
    $.ajax({ 
     url: '/Admin/CustomProductPinCodesManagement/GetProductVarinats', 
     type : 'post', 
     data: { productId: $("#ProductName").data("tDropDownList").val() }, 
     success: function (data) { 
     $.each(data.data.variants, function (i, variant) { 
      $states.append($('<option/>').text(variant.Name).attr('value',variant.Id)); 
     }); 
     }, 
     error: function() { 
     alert('Error'); 
     } 
    }); 
} 
+0

非常感谢,我想通了,但现在我有另一个问题,2下拉列表是在一个telerik网格,现在我不能得到下拉列表Id或做绑定。我如何在电网中找到控制。 – aayyad

0

AcidMedia有一个名为TTControls的库,它使用Telerik,你可以使用TTControls.LinkedDropDown控件来解决这个问题。使用替代