2010-08-03 52 views
0

我正在MOSS 2007中创建一个包含autocompleteextender的web部件。MOSS 2007中的Ajax Web部件

我已经在web.config中添加所有的configs(例here)支持Ajax我的网站

我的Web服务:

[System.Web.Script.Services.ScriptService] 
    public class AutoComplete : System.Web.Services.WebService 
    { 
     [System.Web.Services.WebMethod] 
     [System.Web.Script.Services.ScriptMethod] 
     public string[] GetCompletionList(string prefixText, int count) 
     { 
        List<string> results = new List<string>(); 
        results.Add("Here"); 
        results.Add("Here"); 
        results.Add("Here"); 
        results.Add("Here"); 
        results.Add("Here"); 
        results.Add("Here"); 
        results.Add("Here"); 
        return results.ToArray(); 
     } 
    } 

我能够从Web浏览器击中Web服务。但是,autocomplexxtender不会调用我的web服务。

我的网络服务网址:http://[myserver]/AutoComplete.asmx(我用它作为扩展器的ServicePath)。 我的网页零件页面:http://[myserver]/Pages/mypage.aspx

我也尝试添加一个calendarextender到页面上,日历呈现在文本框下面并显示为内嵌html。奇怪的。

任何想法都会有所帮助。

感谢

回答

0

从你的Web服务URL看起来你已经把Web服务到您的网站的根文件夹。这将不起作用,因为此文件夹由将在内容数据库中查找文件的SharePoint VirtualPathProvider处理。

你应该把你的网络服务为一体的子目录或任何12Hive \ ISAPI或12Hive \ LAYOUTS然后调用它通过相应的

http://[myserver]/_vti_bin/[Folder]/AutoComplete.asmx 

http://[myserver]/_layouts/[Folder]/AutoComplete.asmx 
+0

我在_layouts文件夹中也尝试了它,但它仍然不会调用我的Web服务。 – madatanic 2010-08-04 13:02:48

+0

您是否试过浏览至http:// [myserver]/_layouts/[Folder] /AutoComplete.asmx? 如果该作品尝试使用Fiddler(www.fiddler2.com)来查看发生了什么。 如果只有一个请求经过,那么您应该查找“SharePoint Panel Fix” – 2010-08-04 17:04:09

+0

我能够在_layouts文件夹内浏览我的web服务。我的Web部件中也有UpdatePanel修复程序。似乎有一个覆盖Ajax的SharePoint功能。我不确定是什么。 – madatanic 2010-08-04 19:25:16

0

我不明白为什么如果您使用AJAX,您需要Web服务吗?您可以将代码放入Web部件(或任何构建的内容)中,然后在更新面板中进行回发以获取值。更容易实现/安装/调试/支持。

当然,以前的答案对于Web服务的位置是正确的。我可以补充说,通常的位置是_vti_bin,而不是布局,你通常会把你的自定义ASPX页面,但当然在技术上都可以工作。

请记住,您还应该使用代码或主页面标记向页面添加脚本管理器,否则无论您是否在web.config中添加了AJAX或不支持

+0

我有页面上的scriptmanager,甚至添加一个服务引用。 – madatanic 2010-08-04 13:10:00

+0

考虑不使用Web服务。你能否确认服务器端代码在AJAX提交上运行? – 2010-08-04 13:25:00

+0

我不确定你在说哪个服务器端代码。但是,为了解释我使用Web服务的原因,autocomplexxtender通过使用页面方法或Web服务来获取建议。我没有办法在Web部件中创建静态页面方法。 Web服务是剩下的解决方案。如果通过服务器端代码表示将该扩展器添加到Web部件的控件的部分,那么是的,它运行并将该扩展器添加到页面中。 – madatanic 2010-08-04 14:13:44