1

私はこれで机に頭をぶつけています。

Web ページに AutoCompleteExtender を追加し、呼び出すための Web サービス メソッドを実装しました。ここまでは順調ですね。

Fiddler を使用して、デバッグ時に webservice メソッドが呼び出され、期待どおりの結果が返されることを確認しましたが、画面に何もレンダリングされず、ドロップダウンはありませんか?

ここで誰かが私が間違っていたかもしれないことを提案したり、私が現在困惑しているので試してみるべきことを提案したりできますか:

Web ページでの 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;
    }
4

1 に答える 1

1

わかりました、最終的にこれは (やや厄介なことに) z-index 時間であることが判明しました。AjaxControlToolkit の ModalPopupExtender を使用して表示されるダイアログの z-index がデフォルトで指定されているかどうかはわかりません (ページで表示できる最大の z-index は 10001 でした)。しかし、舞台裏のどこかで属性が指定されていました。つまり、(AutoCompleteExtender からの) ポップアップの提案は常にダイアログの背後に表示されていました (ただし、ダイアログの下から提案を表示するのに十分な結果を返すまで、これは表示されませんでした)。最後に、ModalPopupExtender と AutoCompleteExtender の CompletionListCssClass によってダイアログとして使用されるパネルの z-index をオーバーライドする必要がありました。

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

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

とにかく、最終的にはイライラするほど単純ですが、他の誰かが同様の問題に遭遇した場合に備えて共有したいと思いました!

于 2011-04-04T08:27:34.043 に答える