如何在asp.net中过滤以下列表框?

时间:2009-01-06 20:16:42

标签: c# asp.net listbox

我有4个列表框(lstStates,lstCounties,lstCities和lstZipcodes)。以下是一些限制因素:

  • 没有列出任何列表框。

  • 任何列表框都可以随时选择,这意味着用户无需选择特定的订单。

  • 过滤是向前和向后。这意味着,如果用户从lstStates中选择一个状态,它将过滤lstCounties,lstCities和lstZipcodes。如果用户从lstZipcodes中选择一个zipcode,它将过滤lstCities,lstCounties和lstStates。

  • 列表框允许多项选择。

每个列表框都绑定到数据表以获取其初始数据。从sqlserver存储过程中检索数据表。每个列表框都有自己的存储过程,例如,lstStates有一个名为GetStates,它返回一列(State),ListBoxes DataValueField和DataTextField都设置为State。与lstStates类似,lstCities绑定到一个数据表,该数据表从GetCities存储过程获取一列,即城市。

我想指出的另一件事是我连接一个ObjectDataSource来获取数据表。

3 个答案:

答案 0 :(得分:2)

已经被问到:What is the most efficient way to filter listboxes based on selections of another in c#?

[编辑] 好的,您需要做的是为每个[myListbox] _SelectedIndexChanged事件添加一个事件。更改选择后,您需要根据这些选择刷新所有其他列表框。我认为这需要由数据库处理,因为任何其他方式将状态链接到ZipCodes将是丑陋的。因此,大概是您的状态< - > Zips< - > Counties关系的数据在您的数据库中某处。

所以你需要在db(或LINQ中间层)中通过Zips获取状态等等。在每个选择更改事件上,将新选择发送回db sproc,然后根据返回数据重新绑定列表框。如果没有传入zip,则应该能够为每个返回所有状态的sproc创建一个sproc,依此类推。 [/编辑]

答案 1 :(得分:0)

为了澄清一下,在您初次加载页面时,您正在加载所有邮政编码,所有城市,所有州和所有国家/地区?

这对我来说似乎有点麻烦。这是我要质疑的要求类型。 (当然,我不知道你还没有质疑它,或者有一些好的答案来自它)。

答案 2 :(得分:0)

ScriptManager.RegisterStartupScript(Page,Page.GetType(),“bab”,“CacheItems();”,true);

    var ddlText,ddlValue,ddl,lblMesg;     function CacheItems(){         ddlText = new Array();         ddlValue = new Array();         ddl = document.getElementById(“”);         for(var i = 0; i