无法在回发时为select2分配隐藏字段值

时间:2014-06-25 04:25:48

标签: c# jquery asp.net jquery-select2

我正在尝试从clientside脚本中的hiddenfield为select2控件赋值。在回发后,对于以下代码,值不会分配给select2控件。

$(document).ready(function () {
     $("#cboIndustry").select2();

     $.getJSON(uriSector+ '/' + 'GetIndustrySectors')
           .done(function (data) {
               $.each(data, function (key, item) {
                  $("#cboIndustry").append($("<option></option>").val(item.IndustrySectorID).html(item.IndustrySectorName));
               });
           });

     $("#cboIndustry").on('change', function () {
            if ($("#cboIndustry").val() != "-1") {

                 var id = $("#cboIndustry").val();
                $('#HiddenIndustrySectorID').val(id);
                SelectedName = $('#cboIndustry option:selected').text();
                $('#HiddenIndustrySectorName').val(SelectedName);
            }
        });

   var SelectedIndustry = $('#HiddenIndustrySectorID').val();

   $("#cboIndustry").select2().select('val',SelectedIndustry);

});

但是,如果我在分配

之前设置了警报,则会分配值
var SelectedIndustry = $('#HiddenIndustrySectorID').val(); 

alert(SelectedIndustry);

$("#cboIndustry").select2().select('val',SelectedIndustry); 

// These steps I have included, for retaining value in select2 on postback.

可能是什么原因?请帮帮我。

3 个答案:

答案 0 :(得分:0)

为什么不使用此行

$("#cboIndustry").select2().val(SelectedIndustry); 

BTW我还没有测试过

答案 1 :(得分:0)

 $('#HiddenIndustrySectorID').val(id);

将此行更改为

document.getElementById("HiddenIndustrySectorID").value =id;

并尝试

答案 2 :(得分:0)

$(document).ready(function () {
    $("#cboIndustry").select2();

    $.getJSON(uriSector+ '/' + 'GetIndustrySectors')
       .done(function (data) {
           $.each(data, function (key, item) {
              $("#cboIndustry").append($("<option></option>").val(item.IndustrySectorID).html(item.IndustrySectorName));
        });
    //This change solves my problem

    var SelectedIndustry = $('#HiddenIndustrySectorID').val();

    $("#cboIndustry").select2().select('val',SelectedIndustry);

 });

 $("#cboIndustry").on('change', function () {
        if ($("#cboIndustry").val() != "-1") {
            var id = $("#cboIndustry").val();
            $('#HiddenIndustrySectorID').val(id);
            SelectedName = $('#cboIndustry option:selected').text();
            $('#HiddenIndustrySectorName').val(SelectedName);
        }
    });
 });