UpdatePanel在查看页面时有效,但在iFrame内部则无效

时间:2013-10-10 00:29:24

标签: c# asp.net ajax iframe updatepanel

目前,我有一个下拉菜单,当选择一个项目时,动态填充另一个下拉菜单。这在单独查看页面时完全正常,但是,当我在iframe中查看页面时,当我在下拉菜单中更改选项时没有任何反应。包含iframe的主页面也有一个updatePanel,我觉得可能存在某种路由问题?也许更新无法区分面板并被路由到主页面板?任何帮助表示赞赏!

主页面上的代码与主页面中的代码相同,我正在创建项目,而在框架页面中,我正在更新项目。

修改:更新 我创建了一个测试页面,除了iframe之外没有任何东西,它仍然无效。看起来像updatepanel在我为iframe加载到iframe中时根本不起作用。

ASPX:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
       <li>
          <asp:DropDownList ID="CategorySelector" runat="server" AutoPostBack="True" OnSelectedIndexChanged="CategorySelector_SelectedIndexChanged">
                <asp:ListItem Text="--Please Select--" Value="none"></asp:ListItem>
                <asp:ListItem Text="Everything"></asp:ListItem>
                <asp:ListItem Text="Product"></asp:ListItem>
                <asp:ListItem Text="Brand"></asp:ListItem>
                <asp:ListItem Text="Category"></asp:ListItem>
                <asp:ListItem Text="SubCategory"></asp:ListItem>
            </asp:DropDownList>
            <asp:RequiredFieldValidator ID="RequiredFieldValidator13" runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="CategorySelector" ForeColor="#FF3300" InitialValue="none">*</asp:RequiredFieldValidator>
           </li>
         <li>
           <asp:DropDownList ID="ItemSelector" runat="server">
           </asp:DropDownList></li>   
  </ContentTemplate>
  </asp:UpdatePanel>

protected void CategorySelector_SelectedIndexChanged(object sender, EventArgs e)

{
    if (CategorySelector.Text == "Product")
        {
            ItemSelector.DataSource = Product.GetAllActive();
            ItemSelector.DataTextField = "Name";
            ItemSelector.DataValueField = "ID";
            ItemSelector.DataBind();
        }
        if (CategorySelector.Text == "Category")
        {
            ItemSelector.DataSource = Category.GetAllActive();
            ItemSelector.DataTextField = "Name";
            ItemSelector.DataValueField = "ID";
            ItemSelector.DataBind();
        }
        if (CategorySelector.Text == "SubCategory")
        {
            ItemSelector.DataSource = SubCategory.GetAllActive();
            ItemSelector.DataTextField = "Name";
            ItemSelector.DataValueField = "ID";
            ItemSelector.DataBind();
        }
        if (CategorySelector.Text == "Brand")
        {
            ItemSelector.DataSource = Brand.GetAllActive();
            ItemSelector.DataTextField = "Name";
            ItemSelector.DataValueField = "ID";
            ItemSelector.DataBind();
        }
        if (CategorySelector.Text == "Everything")
        {
            ItemSelector.Items.Clear();
            ItemSelector.Items.Add("Everything");
        }
}

1 个答案:

答案 0 :(得分:0)

问题似乎是我使用fancybox来iframe页面。我忘了将类型iframe添加到花式框设置中,这导致整个页面呈现内联。

$(".modify").fancybox({
    'type': 'iframe'
});

按上述方式添加iframe类型可以解决问题。