填写DropDown列表包含国家,州和城市,无需维护该任务的数据库

时间:2011-04-18 05:41:40

标签: c# .net asp.net data-binding drop-down-menu

我在网站上工作类似于ASP.NET C#中的作业门户。在这里,我需要填写一些DropDownLists来为用户提供选择。在一个部分中,我需要填写3个DropDownLists,每个都有国家,州和城市。有没有办法在不维护国家,州和城市的数据库的情况下填写所有这些列表?我听说过一些第三方工具来执行这项任务,但不知道在哪里寻找它。

在第二部分中,我需要使用所有可能的资格填充DropDownLists,并根据该选择,另一个DropDownLists应填充在其下提供的专业化 资格。

请告诉我最简单的解决方案。

感谢所有人。

2 个答案:

答案 0 :(得分:1)

我不知道任何提供国家/州/城市列表的网络服务,但我认为它们可能存在,因为这实际上是每天都很常见的情况。

我将提供有关您的第二个问题的信息。这是相关的下拉。

相关下拉总是很棘手,最好在没有完整页面回发的客户端上完成加载时完成。但最终它总是归结为填充它们的数据的复杂性和数量。

数据不多

如果您在第一次下拉中有10-50个项目,并且对于每个项目,第二次下拉时还有10-50个项目,我们可以说您没有太多数据。或者当有两个以上的下拉时,我们可以说当一起存在少于x000个记录时我们没有太多数据(在各种浏览器中进行一些测试以获得一些可接受的限制)。在这种情况下,您可以在预装的HTML中提供所有这些数据,当用户与这些字段进行交互时,Javascript可以使用该数据。

我会这样做。我会在服务器上生成JSON并在我的HTML中提供它:

var qualifications = {
    "Manager": ["First", "Second", ...],
    "Developer": ["...", ...],
    ...
};

然后我要在服务器上预先填充我的拳头,或者在页面加载时在客户端填充它(在jQuery中使用$(function(){...});)。处理change事件然后将使用specialities中的数组填充第二个下拉列表,该数组是上述关联对象的一部分(我使用关联对象而不是数组,因为它将更容易找到相应的专业数组,只需执行以下操作填充我的第二个下拉列表:

$("#FirstDropDown").change(function(){
    var specialities = qualifications[$(this).val()];
    ...
});

大量数据

如果我们在每个下拉列表中有大量数据(或频繁更改的数据),则无法预先加载它们。当用户通常选择多种组合时,我们有一些用户界面流程是唯一可行的(因此我们最终会加载90%的所有数据)。反正。

  1. 预加载服务器上的第一个下拉列表(或在页面加载时在客户端上)
  2. 将客户端事件附加到第一个下拉列表,该事件发出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
            }
        });
    });
    
  3. 当返回来自服务器的数据时,我们可以填充第二个下拉列表并在其change事件上附加类似的行为。

  4. 为下一次下拉做类似的事情
  5. 这样,由于只加载了少量数据,我们得到了快速的页面响应。

答案 1 :(得分:0)

任何IEnumerable都可以用于像IList这样的数据源。创建国家/地区对象列表并将其设置为数据源。设置DisplayMember和ValueMember,并填充您的列表。