0

最初のドロップダウンから取得した ID に基づいて 2 番目のドロップダウン リストをバインドする必要があります。最初のドロップダウンで、イベントを追加しOnChangeました。

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);
}

しかし、それは機能しません。

4

2 に答える 2

0

AcidMedia には、Telerik を使用する TTControls というライブラリがあり、この問題を解決する TTControls.LinkedDropDown コントロールを使用できます。

于 2012-10-01T12:23:01.637 に答える
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');
      }
    });
 }
于 2012-10-01T12:24:11.070 に答える