AutoCompleteExtender正在触发,webservice正在返回结果,但这些结果未显示

时间:2011-04-01 12:46:07

标签: c# asp.net autocompleteextender

我一直在这张桌子上撞着桌子。

我已将AutoCompleteExtender添加到我的网页,并实现了Web服务方法以供其调用。到目前为止,非常好。

使用Fiddler,我已经检查过,在调试时,正在调用webservice方法,并返回我希望看到的结果..但没有任何东西被渲染到屏幕上,没有下拉?

这里的任何人都可以建议我可能做错了什么,或提出一些建议,因为我目前难倒的事情:

网页中的AutoCompleteExtender声明:

<cc1:AutoCompleteExtender runat="server" ID="lookupAgencyAppSettingName" TargetControlID="txtAgencyAppSettingName" ServiceMethod="GetListOfSettings"
ServicePath="~/Authenticated/AJAXMethods.asmx" MinimumPrefixLength="1" CompletionInterval="500" EnableCaching="true" />

为了完整性,这里是Webservice方法:

[System.Web.Services.WebMethod]
    [System.Web.Script.Services.ScriptMethod]
    public string[] GetListOfSettings(string prefixText, int count)
    {
        string[] suggestedSettings = new string[0];
        List<string> settingNames = new List<string>();
        List<AgencyApplicationClientSetting> settings = AgencyApplicationClientSetting.All().ToList<AgencyApplicationClientSetting>();
        foreach(AgencyApplicationClientSetting setting in settings)
        {
            if((setting.SettingName.ToLower().StartsWith(prefixText.ToLower())) && (!settingNames.Contains(setting.SettingName)))
            {
                settingNames.Add(setting.SettingName);
            }
        }
        if(settingNames.Count > 0)
        {
            suggestedSettings = settingNames.ToArray();
        }
        return suggestedSettings;
    }

1 个答案:

答案 0 :(得分:2)

好吧,最终这有点令人讨厌(z-index)时间。 我不确定使用AjaxControlToolkit的ModalPopupExtender显示的对话框默认是什么z-index(我在页面上看到的最高z-index是10001)..但是在幕后的某个地方给它一个属性这意味着我的弹出建议(来自AutoCompleteExtender)总是在对话框后面呈现(但是在我返回足够的结果以从对话框下方获得建议之前看不到这一点)。 最后,我不得不重写ModalPopupExtender用作对话框的面板的z-index和AutoCompleteExtender的CompletionListCssClass:

            .popUpDialog
        {
            z-index: 99 !important;
        }

        .autoComplete_listMain
        {
            z-index: 2147483647 !important;
            background: #ffffff;
            border: solid 2px #808080;
            color: #000000;
        }

无论如何,最后还是非常简单,但我认为我会分享以防万一其他人遇到类似的问题!