Ich versuche, meine Hovermenuextenders einige lazy Loading zu tun. Ich habe Avatare über die Seite, die, wenn sie über die Seite gezogen werden, verschiedene Dinge zurückziehen sollten (Bilder, aktuelle Beiträge, Post-Zählung usw.). Aus offensichtlichen Gründen möchte ich das nicht für alle Avatare auf page_load machen.ASP.NET HoverMenuExtender Lazy Loading
Mit dem folgenden Code bin ich in der Lage, das Hover-Ereignis zu erhalten, um asynchron ein Postback auf den Server auszulösen (Breakpoint ist onmouseover getroffen). Die Befehle im Postback scheinen jedoch nach der Ausführung nicht wiedergegeben zu werden. Das geladene Bild/Etikett bleibt im Schwebepanel. Jede Hilfe wird geschätzt!
BEARBEITEN: Ich habe gerade festgestellt, dass der allerletzte Avatar, der auf der Seite gerendert wird, richtig funktioniert, aber keiner der darüber liegenden. Irgendwelche Ideen, was dieses merkwürdige Verhalten verursachen könnte?
<script language="javascript" type="text/javascript">
function OnHover(image) {
__doPostBack('<%= this.imageHoverTrigger.UniqueID %>', '');
}
</script>
<!-- DUMMY Hover Trigger -->
<input id="imageHoverTrigger" runat="server" style="display:none;"
type="button" onserverclick="imageHoverTrigger_Click" />
<!-- User Avatar -->
<div style="border: solid 1px #AAA; padding:2px; background-color:#fff;">
<asp:ImageButton ID="UserImg" runat="server" />
</div>
<!-- Hover tooltip disabled by default
(Explicitly enabled if needed)-->
<ajax:HoverMenuExtender ID="UserInfoHoverMenu" Enabled="false" runat="server"
OffsetX="-1"
OffsetY="3"
TargetControlID="UserImg"
PopupControlID="UserInfoPanel" dyn
HoverCssClass="userInfoHover"
PopupPosition="Bottom">
</ajax:HoverMenuExtender>
<!-- User Profile Info -->
<asp:Panel ID="UserInfoHover" runat="server" CssClass="userInfoPopupMenu">
<asp:UpdatePanel ID="UserInfoUpdatePanel" runat="server" UpdateMode="Conditional" >
<ContentTemplate>
<asp:Image ID="loadingImg" runat="server" ImageUrl="~/Design/images/ajax-loader-transp.gif" />
<asp:Label ID="loadingLbl" runat="server" Text="LOADING..." ></asp:Label>
<asp:Panel ID="UserInfo" runat="server" Visible="false">
<b><asp:Label ID="UserNameLbl" runat="server"></asp:Label><br /></b>
<span style="font-size:.8em">
<asp:Label ID="UserCityLbl" runat="server" Visible="false"></asp:Label> <asp:Label ID="UserStateLbl" runat="server" Visible="false"></asp:Label>
</span>
</asp:Panel>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="imageHoverTrigger" />
</Triggers>
</asp:UpdatePanel>
</asp:Panel>
Und der Code-behind:
protected void Page_Load(object sender, EventArgs e)
{
UserImg.Attributes.Add("onmouseover", "javascript:OnHover(this)");
}
protected void imageHoverTrigger_Click(object sender, EventArgs args)
{
// Hide loading image/label
loadingLbl.Visible = false;
loadingImg.Visible = false;
//TODO: Set user data here
UserInfo.Visible = true;
}
Bump. Hat jemand eine Idee dazu? – XVargas