对动态填充的列表框进行排序

时间:2013-07-16 15:44:35

标签: javascript jquery asp.net

我有一个列表框,由用户动态填充,其值由管道分隔值和名称组成。我使用密钥进行检查以确保相同的值不会被添加两次,但之后我想对剩余的列表进行排序。

我的JavaScript看起来像这样:

function storeaccount(name, account, accountName, Nom)
    var count = 0;
    var key = name + "|" +  account + "|" + accountName + "|" + Nom;
    var listBox = document.getelementbyid(listbox);    
    for(var i = 0; i < listBox.options.length; i++){
        if(listBox.options[i].value == key)
        { count++;
        }
    }

    if (count < 0) {
        $('<%listbox.clientid%>')append('<option value="' + key + '"> + name + '</option>
    }

我如何按名称对列表框进行排序,同时保持密钥完整无缺,以便在我的重复检查中使用jQuery?

1 个答案:

答案 0 :(得分:1)

如果我是正确的,您希望按字母顺序对列表框进行排序。您还使用JS执行重复检查。

我会说,保留您已完成的所有操作,并在完成重复检查过程后在其上执行排序操作(如2个松散集成的过程)。

以下是对列表框执行排序的方式:

    function SortList(listname) { 
        var $r = $(listname + " option"); 
        $r.sort(function(a, b) { 
            return (a.value < b.value) ? -1 : (a.value > b.value) ? 1 : 0;
        // if you do not have value attribute for option use the text value. Replace the above line of code with the one below.
        //return (a.value < b.value) ? -1 : (a.value > b.value) ? 1 : 0;
        }); 
        $($r).remove(); 
        $(listname).append($($r)); 
    } 

然后,调用函数:

SortList('#Id_Of_Listbox');

这是jsfiddle示例:http://jsfiddle.net/Kz2bg/2/