How to programmatically set the ContextKey of an AutoComplete Extender placed in a gridviews footer
- by rism
As per the thread title I want to programmatically set the ContextKey of an AutoComplete Extender placed in a gridviews footer row.
Background is I have a data model that has Territory and Journey Plans for those territories. Customers need to be added to the journey plans but only those customers that belong to the Territory that owns the Journey Plan.
In the footer row of my grid I have added a textbox which allows a user to enter account code of customer. Attached to this textbox is an autocomplete extender. I need to do a select against the db for customers with account code like prefix where customer in territory.
But there is no way to provide territory id. I thought I could just:
<asp:TemplateField HeaderStyle-Width="100" HeaderStyle-HorizontalAlign="Left" HeaderText="LKey"
ItemStyle-HorizontalAlign="Left" ItemStyle-Width="100">
<ItemTemplate>
<asp:Label ID="lblLKey" runat="server" Text='<%# Eval("LKey") %>' />
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txtLKey" CssClass="sitepagetext" runat="server" MaxLength="15" Width="60" />
<cc1:AutoCompleteExtender ID="Autocompleteextender1" MinimumPrefixLength="4" CompletionInterval="1000"
CompletionSetCount="10" ServiceMethod="GetCompletionList" ContextKey="<% this.Controller.TerritoryId %>"
TargetControlID="txtLKey" runat="server">
</cc1:AutoCompleteExtender>
</FooterTemplate>
</asp:TemplateField>
for the relevant field in the grid but when the page is run I get the following markup for the autoextender:
Sys.Application.add_init(function() {
$create(AjaxControlToolkit.AutoCompleteBehavior, {"contextKey":"\u003c% this.Controller.TerritoryId %\u003e","delimiterCharacters":"","id":"ctl00_ctl00_mainContentHolder_serviceContentHolder_qlgvJourneyPlanCustomers_ctl03_Autocompleteextender1","minimumPrefixLength":4,"serviceMethod":"GetCompletionList","servicePath":"/Views/CRM/JourneyPlans/CustomersEditor.aspx","useContextKey":true}, null, null, $get("ctl00_ctl00_mainContentHolder_serviceContentHolder_qlgvJourneyPlanCustomers_ctl03_txtLKey"));
});
//]]>
</script>
ContextKey value doesnt get evaluated. It just uses the literal text.
Any thoughts?