客户端可用的服务器端数据

时间:2010-11-02 12:50:21

标签: javascript asp.net performance client-side server-side

我想要做的是根据页面上的其他下拉列表更改下拉列表选项。我所做的就是在隐藏的文本框中写下所有可能性。这很有效,但是当有很多选择时,页面很慢。

有更好的方法吗?

感谢您的时间

5 个答案:

答案 0 :(得分:2)

最好的方法是使用AJAX。总之,您需要:

  1. 写一个服务器端脚本(可能是ashx),它返回依赖于某个变量的下拉列表的相关结果
  2. 使用JavaScript(或类似jQuery的库)对ashx页面进行AJAX调用。此调用需要通过POST或GET将定义变量传递给服务器。
  3. 将此AJAX调用附加到选择框的更改事件,以便在更改它们时可以更新其他事件
  4. 当AJAX调用完成后,您将需要一个JavaScript函数来对返回的数据进行排序。此数据可以是添加到页面的简单HTML,也可以是需要格式化的更复杂的JSON对象。这是你的选择。但是这种格式和响应需要用JavaScript编写。

答案 1 :(得分:1)

可以使用一些可用的ASP.Net AJAX技术来完成。如果将下拉列表框放在UpdatePanel中并将它们设置为异步回发,则可以使它们在选择时刷新。

因为只刷新了UpdatePanel中的代码,所以加载结果的速度要快得多。

使用updatepanel和几个下拉列表查看this article以获取一个很好的示例。

答案 2 :(得分:0)

正如laurencek所说,AJAX将是最终的解决方案。在asp.net上,有一个很好的示例提供了一个可理解的解释,here。稍微使用Web服务可能会导致暂停,但仍然可以很好地解释您正在寻找的内容。

答案 3 :(得分:0)

我将介绍一种可能的情况。

  1. 首次加载页面时,会显示“默认”选项列表。这是使用服务器端逻辑完成的。
  2. 当用户点击下拉列表时,在客户端使用Javascript,您可以计算其他人的行为方式,并相应地操纵它们。
  3. 如果您的某个列表需要客户端无法提供的新信息,则使用AJAX轮询服务器以获取该信息。
  4. (可选)如果您不希望每次用户在下拉列表中单击时轮询服务器,您可以在客户端缓存新信息。

答案 4 :(得分:0)

AJAX是其他所有人都能指明的方式,您可以使用其他人已编写的代码来节省您的时间,例如:http://www.codeproject.com/KB/custom-controls/ajaxdropdownlist.aspx

这个已经很老了,但至少可以告诉你你需要什么。