我有一个运行jquery onclick事件的页面。该事件将外部.aspx文件加载到div中。正在加载的页面有一个下拉列表,其中包含一个autopostback属性,用于将所选项目传递给标签。
除了正在加载的.aspx文件只返回一次之外,一切正常。之后不再有autopostback。这是我的代码
----- external.aspx ------
<script>
protected void ddlPrices_SelectedIndexChanged(object sender, EventArgs e)
{
lblPrice.Text = ddlPrices.SelectedValue.ToString();
}
</script>
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DropDownList ID="ddlPrices" runat="server" AutoPostBack="true"
onselectedindexchanged="ddlPrices_SelectedIndexChanged">
<asp:ListItem>Basic</asp:ListItem>
<asp:ListItem>Pro</asp:ListItem>
<asp:ListItem>Platinum</asp:ListItem>
<asp:ListItem>Baller!</asp:ListItem>
</asp:DropDownList>
<asp:Label ID="lblPrice" runat="server"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>
---- default.aspx ------
<script>
$(document).ready(function () {
$("li#empNav1").click(function () {
$("div.subItem").load('external.aspx');
});
});
</script>
<ul class="nav-left">
<li id="empNav1" class="selected"><a href="#">Employer Overview</a></li>
<li id="empNav2"><a href="#">Why We're Better</a><span></span></li>
</ul>
<div class="subItem"></div>
如上所述div加载得很好,但external.aspx只会更新lblPrice一次。然后它不再自动更新。任何帮助将非常感谢具体细节....
更新:我已经尝试在default.aspx中放置一个更新面板,该面板围绕正在加载但未切割它的div。
答案 0 :(得分:1)
好$.load()
实际上从请求的URL复制HTML并将其“粘贴”到目标容器中。父页面的ViewState可能与您正在加载的页面的ViewState冲突,因此找不到对ddlPrices_SelectedIndexChanged
方法的PostBack调用。
我建议将您的下拉代码放入UserControl,并将您的ScriptManager和UpdatePanel保留在父页面上。
所以你可以制作像CTRLPriceList.ascx
这样的东西:
<asp:DropDownList ID="ddlPrices" runat="server" AutoPostBack="true"
onselectedindexchanged="ddlPrices_SelectedIndexChanged">
<asp:ListItem>Basic</asp:ListItem>
<asp:ListItem>Pro</asp:ListItem>
<asp:ListItem>Platinum</asp:ListItem>
<asp:ListItem>Baller!</asp:ListItem>
</asp:DropDownList>
<asp:Label ID="lblPrice" runat="server"></asp:Label>
其守则背后将是:
protected void ddlPrices_SelectedIndexChanged(object sender, EventArgs e)
{
lblPrice.Text = ddlPrices.SelectedValue.ToString();
}
要真正探索正在发生的事情,您应该使用像Firebug或Chrome内置的HTML调试器,它可以让您实时了解在DOM中呈现的内容(例如,在处理$.load()
之后) 。我有一种感觉,将一个完整的ASPX页面加载到另一个页面看起来会非常混乱,并且可能不是一个好主意,即使你确实让它工作。
同时检查Javascript错误。