首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将ContextKey设置为AutoCompleteExtender Set

将ContextKey设置为AutoCompleteExtender Set
EN

Stack Overflow用户
提问于 2013-02-09 07:26:20
回答 2查看 5.8K关注 0票数 0

我在一个AutoCompleteExtender中有一个AJAX GridView,如下所示:

代码语言:javascript
复制
<asp:GridView
    ID="GV1"
    runat="server"
    AllowPaging="True"
    OnPageIndexChanging="GV1_OnPageIndexChanging"
    OnRowCommand="GV1_RowCommand">
    ...

    <asp:TextBox 
        ID="txt1" 
        runat="server" 
        onkeyup = "SetContextKey()">
    </asp:TextBox>

    <cc1:AutoCompleteExtender
        ID="AutoCompleteExtender1"
        runat="server"
        TargetControlID="txt1"
        ServiceMethod="GetACEList"
        ServicePath="AutoComplete.asmx"
        UseContextKey = "true"
        MinimumPrefixLength="1"
        EnableCaching="true"
        CompletionSetCount="1"
        CompletionInterval="100"
        CompletionListCssClass="autocomplete_completionListElement"
        CompletionListItemCssClass="autocomplete_listItem"
        CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem">
    </cc1:AutoCompleteExtender>

    ...
</asp:GridView>

试图设置上下文键时,我无法访问客户端和服务器端的 AutoCompleteExtender .

在客户端,我试过:

代码语言:javascript
复制
function SetContextKey() {
    $find('AutoCompleteExtender1').set_contextKey($get("<%=ddlCountry.ClientID%>").value);
}

但是JavaScript无法找到'AutoCompleteExtender1‘对象。我意识到这是因为生成的HTML中有很多'AutoCompleteExtender1‘对象,每个对象都有一个唯一的ID。

然后我找到了这篇文章,并尝试在服务器端设置上下文键:

代码语言:javascript
复制
protected void ddlCountry_OnSelectedIndexChanged(object sender, EventArgs e) {
    AutoCompleteExtender1.ContextKey = ddlCountry.SelectedValue;
}

但是代码编译失败了,错误是:The name 'AutoCompleteExtender1' does not exist in the current context

问题:

如何在下拉列表的选定索引更改上访问AutoCompleteExtender1对象,以便设置上下文键?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-10 15:58:59

明白了!我修正了如何在服务器端错误地访问对象,并且它工作了!

以下是服务器端代码--在选定的索引上更改下拉列表,我循环遍历GridView的每一行,并将每个AutoCompleteExtender对象的ContextKey设置为下拉的选定值:

代码语言:javascript
复制
protected void ddlCountry_OnSelectedIndexChanged(object sender, EventArgs e) {

    foreach (GridViewRow gvRow in gvGV1.Rows) {

        AjaxControlToolkit.AutoCompleteExtender AutoCompleteExtender1 
         = (AjaxControlToolkit.AutoCompleteExtender)gvRow.FindControl("AutoCompleteExtender1");

        AutoCompleteExtender1.ContextKey = ddlCountry.SelectedValue;
    }
}

希望这能帮助别人发现这个问题!

P.S.:

我放弃了在客户端实现同样的目标。我认为能够在服务器端(在C#中)设置上下文键在灵活性方面有很多优点(比如能够在需要时更改上下文键,而不仅仅是在下拉列表的更改上)。不过,如果有人知道如何在客户端(在JavaScript中)完成,请分享。

票数 1
EN

Stack Overflow用户

发布于 2016-06-27 10:48:52

如果希望在HTML设置代码而不是c#代码,则可以使用下面的代码

代码语言:javascript
复制
    for (var i = 0; i < grid.rows.length - 1; i++) {
    var txtAmountReceive = $("input[id*=txt1]")
    var GridRowID = (txtAmountReceive[i].valueOf('id').id).replace("txt1", "");
    var AutoCompleteExt = GridRowID + 'AutoCompleteExtender1';
    
    $find(AutoCompleteExt).set_contextKey("1");
    
    }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14785937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档