用国家、州和城市填充下拉列表,而不维护该任务的数据库
本文关键字:维护 任务 数据库 下拉列表 国家 填充 城市 | 更新日期: 2023-09-27 17:50:30
我正在网站上工作,就像ASP中的工作门户一样。净c#。这里我需要填写几个下拉列表,为用户提供选择。在一个部分,我需要填写3个下拉列表,每个下拉列表包含国家、州和城市。有没有一种方法可以让我在不维护国家、州和城市数据库的情况下填写所有这些列表?我听说过一些第三方工具可以执行此任务,但不知道在哪里可以找到它。
在第二部分中,我需要用所有可能的资格填充下拉列表,并且基于该选择,另一个下拉列表应该填充在该下提供的专门化资格。
请告诉我最简单的解决办法。
谢谢大家。
我不知道有任何web服务可以提供国家/州/城市列表,但我想它们可能存在,因为这确实是每天都很常见的场景。
我会提供你第二个问题的信息。这是相关的下拉菜单
相关的下拉菜单总是很棘手,最好在客户机上加载而没有完整的页面回发时完成。但最终,它总是归结为填充它们的数据的复杂性和数量。
数据不多
当你在第一个下拉列表中有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%)。不管怎样。
- 在服务器上预加载第一个下拉菜单(或在页面加载时在客户端上)
将客户端事件附加到第一个下拉列表,该事件发出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 } }); });
当从服务器返回数据时,我们可以填充第二个下拉菜单,并在其
change
事件上附加类似的行为。- 对下一个下拉菜单做类似的事情
这种方式我们得到快速的页面响应,因为只加载少量的数据。
任何IEnumerable都可以用于像IList这样的数据源。创建一个国家对象列表,并将其设置为数据源。设置DisplayMember和ValueMember,你的列表就被填充了。