保存html的值会选择并在回发时重新选择它们

时间:2014-06-02 09:36:27

标签: c# javascript jquery html asp.net

我有五个html选择形式的下拉列表。第一个使用jQuery绑定页面加载,其余绑定在选择上一个下拉列表时。每个下拉列表还有五个隐藏字段,用于存储选定的值。

我的问题是,当我回复帖子时,即点击"搜索"按钮,我必须重新填充下拉列表并使用隐藏字段中的ID再次选择正确的值。到目前为止,我还没有找到好办法。

在.aspx页面中:

<select name="boxFunktionsnedsattning" id="boxFunktionsnedsattning" multiple="multiple </select>

<asp:TextBox ID="HiddenBoxFunktionsnedsattning" runat="server" />

<script type="text/javascript">
function boxFunktionsnedsattningPopulate() {

    $.ajax({
        type: "POST",
        url: "Sok.aspx/getFunktionsnedsattningar",
        data: {},
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: LoadBoxFunktionsnedsattning,
        failure: function (response) {
            alert(response);
        }
    });

}

//============================================================================================================

function LoadBoxFunktionsnedsattning(response) {

    var result = response.d;

    var options = $("#boxFunktionsnedsattning");
    options.text(''); // clear the box content before reloading
    if ($('#boxFunktionsnedsattning').val != '') {
        options.removeAttr("disabled");
        options.multipleSelect("enable");
    }
    else {
        options.attr("disabled", true);
        options.multipleSelect("disable");
    }

    $.each(result, function () {
        options.append($("<option />").val(this.id).text(this.name));
    });
    UpdateBoxEnabledState();
    options.multipleSelect("refresh");

}
</script>

后端代码:

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static Funktionsnedsattning[] getFunktionsnedsattningar()
    {
        GetDataService.IgetDataClient gdc = new IgetDataClient();
        return gdc.getFunktionsnedsattningAll();
    }

我应该补充一点,关于jQuery,我是一个初学者,所以我可能会忽略一些事情。

2 个答案:

答案 0 :(得分:0)

如果您使用网络表单使用onclick功能发回服务器而不是提交。我认为这是您想要的功能,因为表单输入中的变量将保持其值。搜索按钮是在同一页面还是不同页面上返回结果,因为它将决定在回发期间保存变量的容易程度。祝你好运!

答案 1 :(得分:0)

使用以下解决方案:

function fillFunktionsnedsattning() {

         //stores the value of selected items

         var $fn = $('#<%=HiddenBoxFunktionsnedsattning.ClientID%>'); 

         //creates an array of the values in the hidden field

         var fnSplit = $fn.val().split(",");

         //val() accepts an array which it uses to select items in the list (go figure)

         $("#boxFunktionsnedsattning").val(fnSplit);
         $("#boxFunktionsnedsattning").multipleSelect("refresh");

         //function that triggers the binding of the next dropdown
         boxFunktionsnedsattningOnChange();

     }

要使其工作,需要在填充下拉列表的函数中调用此函数。每个下拉列表都需要在同一个地方调用自己的fillFunction,例如:

function LoadBoxFunktionsnedsattning(response) {

         var result = response.d;


         var options = $("#boxFunktionsnedsattning");
         options.text(''); // clear the box content before reloading
         if ($('#boxFunktionsnedsattning').val != '') {
             options.removeAttr("disabled");
             options.multipleSelect("enable");
         }
         else {
             options.attr("disabled", true);
             options.multipleSelect("disable");
         }

         $.each(result, function () {
             options.append($("<option />").val(this.id).text(this.name));

         });
         fillFunktionsnedsattning();
         UpdateBoxEnabledState();
         options.multipleSelect("refresh");

可能有可能简化这一点,但这对我有用。