在服务器端事件启动以进行telerik控制之前等待

时间:2012-05-21 19:10:23

标签: combobox telerik

我正在使用Telerik Combobox和EnableLoadONLoad = True,即每当最终用户键入一个字母时,服务器端事件就会启动以拉出该字的记录。例如,在下拉框中,如果我键入America,系统将搜索A然后搜索AM然后搜索AME等等...并显示与这些字母匹配的结果。因此,在上面的情况下,系统将7次服务器端事件。现在问题是搜索功能需要一段时间(任何时间从5到10秒拉记录...超出我的控制:()我想要的是当最终用户键入的东西时,我想等待一秒钟,看看用户是否仍然一秒钟之后,我希望系统能够进行搜索。希望在一秒钟之内,最终用户可以输入他们需要的任何内容。现在我可以强制用户输入最少5个字母,依此类推,但最终用户可以搜索一个字母或多个字母。由于业务要求,他们不希望受到限制。

2 个答案:

答案 0 :(得分:0)

您可以指定一个'ItemRequestTimeout',以毫秒为单位1000,这将告诉组合框在发射到服务器之前等待1秒。

答案 1 :(得分:0)

默认情况下,其组合框中的itemRequestTimeout为300,即十分之三秒。做Brian Suggested的工作,但我发现默认通常是足够的时间才能引发回发。

此外,如果您将MarkFirstMatch="true"合并到组合框中,它将自动转到与文本匹配的项目(如果存在)。

http://demos.telerik.com/aspnet-ajax/combobox/examples/populatingwithdata/autocompletesql/defaultcs.aspx

这也应该给你一些其他的选择。

但是,如果强制用户在回发之前输入5个字母,您可能需要执行onkeyup和onkeydown javascript事件以检查他们是否输入了5个字符,然后您可以进行回发。
或者您可以使用Telerik组合框的OnClientkeyPressing属性进行检查。

 function OnClientKeyPressing(comboBox, args)
   {
       if (comboBox.get_text().length > 4) {
         //Do postback here
   }
  }

这样的事情可以做你想要的事情。