我试图解决这个问题。 我在UpdatePanel中有一个Accordion。在Accordion控件内部,我最多可以创建四个AccordionPanes,每个都有一个自定义ListView,显示从数据库中提取的一些图像预览。每个预览由160x120 ImageButton组成。当用户点击其中一个按钮时,弹出一个弹出窗口,图像为实际大小(通过Seadragon控件);他现在可以旋转图像并将其保存回数据库。现在,在保存图像之后,我关闭弹出窗口并通过在包含Accordion的UpdatePanel内的隐藏按钮上生成单击事件来提交回发,但即使我可以单步执行隐藏按钮事件代码,刷新也不会。发生。隐藏按钮是我尝试过的最后一个(也是最有效的)解决方案,没有成功。我错过了什么? (绝对最佳的解决方案是刷新唯一更改的图像,因为有时ListView包含多个预览)。
这是
<div>
<table class="style8">
<tr>
<td class="style2">
<asp:UpdatePanel ID="usersPanel" runat="server" >
<ContentTemplate>
<cc1:c1treeview ID="tvUsers" runat="server"
onselectednodeschanged="tvUsers_SelectedNodesChanged" AutoPostBack="True"
onnodecheckchanged="tvUsers_SelectedNodesChanged">
</cc1:c1treeview>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel ID="imagesPanel" runat="server" UpdateMode="Always" >
<ContentTemplate>
<asp:Button ID="hiddenImageRefresh" runat="server" Text="Refresh"
style="display:none;" onclick="hiddenImageRefresh_Click" />
<ajaxToolkit:Accordion ID="accImages" runat="server" >
</ajaxToolkit:Accordion>
</ContentTemplate>
</asp:UpdatePanel>
</td>
</tr>
</table>
</div>
这是隐藏按钮点击事件中包含的代码,代码在弹出窗口关闭时定期运行。它只是提取用户代码(促销)并重新绑定数据(LoadImages)
protected void hiddenImageRefresh_Click(object sender, EventArgs e)
{
string promo = "";
if(Session[SessionVariables.CurrentPromoter] != null)
promo = Session[SessionVariables.CurrentPromoter].ToString();
LoadImages(promo, ddlImageType.SelectedValue);
}
答案 0 :(得分:0)
仅刷新更新图像的步骤
步骤1:在JavaScript中
//Take one global variable
var selectedImageId="";
步骤2:在JavaScript中
//set above var with image id, When user clicks on the ImageButton, which is inside openPopup function
selectedImageId = this.id;
步骤3:在Code-Behind中
protected void bSave_Click(object sender, EventArgs e) {
//SaveImage();
#region here get the imageUrl that needs to be updated and send as parameter in closePopup js function
var timeStamp = dImgTag.ToString("yyyyMMdd HH:mm:ss.fff") ;
var promoter = riga["PROMOTER"].ToString();
var pv = riga["PV"].ToString();
var imageUrl = string.Format("../Handlers/ImageLoader.ashx?id={0}&promo={1}&pv={2}", timeStamp, promoter, pv);
#endregion
ClientScriptManager csm = Page.ClientScript;
csm.RegisterStartupScript(Page.GetType(), "closeScript", "closePopup(true,'"+ imageUrl +"');", true);
}
步骤4:在JavaScript中
function closePopup(refreshParent, imageUrl) {
if (refreshParent) {
//get the selectedImage and set the source with new url
var selectedImage = window.opener.document.getElementById(selectedImageId);
selectedImage.src = imageUrl;
}
window.close();
}