【发布时间】:2012-03-12 21:11:30
【问题描述】:
我的 default.aspx 页面中有一个 UpdatePanel,UpdatePanel 有 asp 占位符,我还有一个 ascx 控件,它是网站的导航,它是根据数据库中的数据动态创建的,每个导航项都是一个 ImageButton,我在 DataList 中的每个循环都有每个对应 ascx 控件的 URL 的 HiddenField 值,例如 Value="~/controls/somecontrol.ascx"
这是我想要/需要做的: 我需要为我的 ascx 导航控件中 default.aspx 中的 UpdatePanel 动态创建触发器,所以我真正想要做的是我的每个导航项是一个“ImageButton”作为此 UpdatePanel 的触发器以及何时点击它,它将引用UpdatePanel中的占位符并根据NavigateUrl路径加载控件并执行placeholder.Controls.Add(mycontrol)。
Default.aspx 页面:
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:PlaceHolder ID="phMainHolder" runat="server"></asp:PlaceHolder>
</ContentTemplate>
</asp:UpdatePanel>
</asp:Content>
导航 ascx 控件:
<asp:DataList ID="dlnavigations" runat="server" RepeatDirection="Horizontal"
onitemcommand="dlnavigations_ItemCommand" OnItemDataBound="dlnavigations_ItemDataBound">
<ItemTemplate>
<asp:HiddenField ID="hfURL" Value='<%#Eval("strUrl")%>' runat="server" />
<asp:ImageButton ID="imgTab" Width="20" CommandArgument='<%#Eval("ID")%>'
ImageUrl='<%#Eval("strIcon")%>' runat="server" />
</ItemTemplate>
</asp:DataList>
protected void dlnavigations_ItemCommand(object source, DataListCommandEventArgs e)
{
HiddenField hfURL = (HiddenField)e.Item.FindControl("hfURL");
Control ctrl = LoadControl(hfURL.Value);
myplaceholderinUpdatePanel.Controls.Clear();
//here i need to reference my placeholder in UpdatePanel then
myplaceholderinUpdatePanel.Controls.Add(ctrl);
}
我不太确定这是否真的可以用 UpdatePanel 来做,请提供任何帮助,如果我不能用 UpdatePanel 来做,还有其他方法可以做同样的概念吗?
谢谢。
【问题讨论】:
-
嗨蒂姆,对不起,我对你告诉我的概念不熟悉,我怎样才能通过链接按钮的点击以编程方式调用更新方法?你有任何示例代码或知道任何后剂量相同的东西吗?因为我花了很多时间搜索这个但找不到任何解决方案!
-
抱歉,我刚刚删除了那条评论,因为我已经写了an answer。
-
我不确定它是否符合您的要求,因为您已经编辑了您的问题并添加了更多详细信息,但希望您现在更好地理解我的方法(请参阅我的编辑)。
标签: asp.net ajax visual-studio asp.net-ajax updatepanel