我在网站上有一个搜索框,它使用带有web服务的AJAX扩展程序。 它在主页上完美运行。 http://www.as-technology.co.uk。
我在子部分页面上拥有相同的控件 https://www.as-technology.co.uk/toner-cartridges/printer/brother
这是完全相同的控件,但页面在文件层次结构中低一级(不在根文件夹中,而是子文件夹)。
我已经缩小了与$(find)javascript函数有关的问题,因为在第二个网页中它无法找到名为" dp1"的AJAX扩展程序。在第一页示例(默认页面)中它。
名为UpdateControl的javascript函数
<script type="text/javascript">
function UpdateControl(value) {
var behavior = $find('dp1');
if (behavior) {
behavior.populate(value);
}
return false;
}
function ClearSearch() {
var lbl = $(this).find('lblSearchResults');
lbl.value = "";
return false;
}
在第二页上,var&#34;行为&#34;是null,因此填充不起作用。
控件的代码是这样的。
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="SearchBoxWithService.ascx.cs"
Inherits="MB.ASTechnology.UI.Controls.SearchBoxWithService" %>
<%@ Import Namespace="MB.ASTechnology.UI" %>
<script type="text/javascript">
function UpdateControl(value) {
var behavior = $find('dp1');
if (behavior) {
behavior.populate(value);
}
return false;
}
function ClearSearch() {
var lbl = $find('lblSearchResults');
lbl.value = "";
return false;
}
</script>
<asp:Panel ID="Panel1" runat="server" DefaultButton="btnGetHtml"
style="float:left;" >
<div class="input-append">
<input class="span2" id="txtGetHtml" type="text" placeholder="Brand & printer model or cartridge code" style="width: 250px;height:35px;" />
<asp:Button CssClass="btn btn-primary" ID="btnGetHtml" UseSubmitBehavior="true" runat="server" OnClientClick="return UpdateControl(txtGetHtml.value)" Text="Search" />
<asp:Button CssClass="btn btn-default" ID="btnClearSearch" UseSubmitBehavior="true" runat="server" OnClientClick="return ClearSearch" Text="Clear" />
</div>
<asp:Button CssClass="btn" ID="Button1" UseSubmitBehavior="true" runat="server" Text="Search" visible="false"/>
</asp:Panel>
<asp:Label ID="lblSearchResults" runat="server" Text=""></asp:Label>
<ajaxToolkit:DynamicPopulateExtender ID="dp1" runat="server" BehaviorID="dp1"
TargetControlID="lblSearchResults" ServicePath="~/TextSearchService.asmx" ServiceMethod="DynamicPopulateMethod"
ClearContentsDuringUpdate="true" PopulateTriggerControlID="Button1">
</ajaxToolkit:DynamicPopulateExtender>
答案 0 :(得分:0)
我使用了幻灯片扩展器,它的工作方式基本如下:
$find('behaviorID')._contextKey = value;
我认为大多数扩展器的工作原理相同,所以它会像:
function UpdateControl(value) {
var behavior = $find('dp1');
if (behavior) {
behavior._contextKey = value;
}
return false;
}
第h
答案 1 :(得分:0)
我已经解决了这个问题。我没有在页面上没有工作的ajax toolscriptmanager。相反,我有一个普通的asp脚本管理器。然后我把线放回$ find('dp1')并且它有效。