2010-07-08 54 views
2

我试图在Visual Studio中构建SharePoint 2007 Web部件。 此Web部件应该搜索SharePoint列表并显示结果。在打字时动态显示搜索结果

我想完成的是在用户停止输入时立即显示结果,因此不需要点击按钮。

可能是text_changed事件和onkeydown javascript的组合?

任何想法都会很棒。

此sharepoint站点是“支持Ajax的”,顺便说一句。

感谢

回答

3

我会建议使用jQuery和KEYUP:

$("input#txtid").keyup(function() { 
       if (this.value.length < 8) 
        return false; 

       $.get("ServiceUrl", { arg: this.value }, function (result) { $("#output").html(result); }); 

      }); 
+1

+1,但使用'keydown'和'change'。请记住,用户可以使用鼠标技术来改变搜索词(剪切,粘贴,拼写正确等) – 2010-07-08 17:45:08

0

照顾UI部分的最简单的方法是使用AjaxToolkit AutoCompleteExtender瑟MOSS, AJAX and the AutoCompleteExtender那么所有你需要做的只是决定你想如何在网络服务内搜索工作

0

我在我的web部分使用UpdatePanel来解决这个问题。然后,我在UpdatePanel中添加了一个Button(稍后详细介绍)和一个TextBox。

我也有一个JavaScript类,它处理用户在键入查询时暂停后提交查询的所有逻辑。它包含了其连接到TextBox的onkeyup事件的事件处理程序:

t.Attributes.Add("onkeyup", "javascript:oSearchClass.KeyUpEventHandler(event);");

我以前setTimeout and clearTimeout处理时,类应该叫SubmitQuery功能。

当调用SubmitQuery()时,它会使文本框只读(因此用户在查询时不能输入任何内容),然后使用click()“点击”按钮。由于您使用的是普通按钮,因此您可以像处理常规一样处理Button.click事件,以重新查询列表并显示结果。

如果你不想让你的用户看到按钮,你可以简单地把它放在隐藏的span WebControl中。