用国家,州和城市填充DropDownList,而无需维护该任务的数据库

||                                                                                                                   关闭。这个问题需要更加集中。它当前不接受答案。                                                      
已邀请:
任何IEnumerable都可以用于IList之类的数据源。列出国家对象并将其设置为数据源。设置DisplayMember和ValueMember,然后将填充列表。     
我不知道会提供国家/地区/城市列表的任何Web服务,但我想它们可能存在,因为这实际上每天都是相当普遍的情况。 我将提供有关您的第二个问题的信息。这是相关的下拉列表。 当在客户端上完成加载而没有整页回发时,相关的下拉列表始终很棘手,最好做到。但是最后,总归结为填充数据的复杂性和数据量。 数据不多 当您在第一个下拉菜单中有10-50个项目,而在第二个下拉菜单中又有10-50个项目时,可以说您没有太多数据。或者,当下拉列表多于两个时,我们可以说当总共少于x000条记录时,我们没有太多数据(在各种浏览器中进行一些测试以获得一些可接受的限制)。在这种情况下,您可以在HTML中预加载所有这些数据,并且当用户与这些字段进行交互时Javascript可以使用这些数据。 我会这样做。我将在服务器上生成JSON并以HTML形式提供:
var qualifications = {
    \"Manager\": [\"First\", \"Second\", ...],
    \"Developer\": [\"...\", ...],
    ...
};
然后,我要么将我的拳头下拉列表预先填充到服务器上,要么在页面加载时将其填充到客户端上(在jQuery中使用using1ѭ)。然后处理
change
事件将通过使用
specialities
中的数组来填充第二个下拉列表,这些数组是上述关联对象的一部分(我使用的是关联对象而不是数组,因为找到对应的专业数组将更加容易,第二步只需执行以下操作即可:
$(\"#FirstDropDown\").change(function(){
    var specialities = qualifications[$(this).val()];
    ...
});
大量数据 当每个下拉列表中都有大量数据(或频繁更改的数据)时,将它们全部预先加载是不可行的。只有当我们有一些用户界面过程,而用户通常选择许多组合时,这才是可行的(这样我们最终将加载所有数据的90%)。无论如何。 将第一个下拉列表预加载到服务器上(或页面加载时的客户端上) 将客户端事件附加到该第一个下拉列表,该事件发出Ajax请求以获取第二个下拉列表数据:
$(\"#Country\").change(function(){
    $.ajax({
        type: \"GET\",
        url: \"Geo/GetStates\",
        data: $(this).val(),
        success: function(data){
            // populate states dropdown
        },
        error: function(xhr, state, err){
            // display alert or something
        }
    });
});
当从服务器返回数据时,我们可以填充第二个下拉列表,并在其“ 2”事件上附加类似的行为。 对下一个下拉列表执行类似的操作 这样,由于仅加载少量数据,我们获得快速的页面响应。     

要回复问题请先登录注册