Asp.net Can';t位置模态弹出窗口
我试图打开一个模式弹出窗口,以响应单击图像。模式弹出窗口将显示图像的放大版本。无论我如何改变它的位置,它都会一直在屏幕中央显示弹出窗口。我试着把更新面板放在一个div中,没有改变。对于图像,我有一个javascript onclick事件:Asp.net Can';t位置模态弹出窗口,asp.net,ajaxcontroltoolkit,modalpopupextender,Asp.net,Ajaxcontroltoolkit,Modalpopupextender,我试图打开一个模式弹出窗口,以响应单击图像。模式弹出窗口将显示图像的放大版本。无论我如何改变它的位置,它都会一直在屏幕中央显示弹出窗口。我试着把更新面板放在一个div中,没有改变。对于图像,我有一个javascript onclick事件: onclick = "fnZoomImage(this.src)" js功能包括: function fnZoomImage(imageUrl) { var imgZoom = document.getElementById("imgZoom");
onclick = "fnZoomImage(this.src)"
js功能包括:
function fnZoomImage(imageUrl) {
var imgZoom = document.getElementById("imgZoom");
imgZoom.src = imageUrl.replace("WebVersion/", "");
imgZoom.style.display = "block";
var modalpopup = $find('mpeZoom');
modalpopup.show();
return false;
}
function HideImage() {
var imgZoom = document.getElementById("imgZoom");
imgZoom.style.display = "none";
var modalpopup = $find('mpeZoom');
modalpopup.hide();
}
弹出式扩展器是:
<div style="position:fixed;top:100;left:200;">
<asp:UpdatePanel runat="server" ID="upnlZoom" RenderMode="Inline">
<ContentTemplate>
<asp:Panel runat="server" ID="pnlZoom" style="position:fixed;top:100;left:200;border:solid 2px navy;display:none;">
<img id="imgZoom" style="display: none;" />
<input type="button" id="btnClose" value="Close" onclick="HideImage()" style="width:75px;" />
</asp:Panel>
<ajaxToolkit:ModalPopupExtender ID="mpeZoom" BehaviorID="mpeZoom" runat="server" TargetControlID="btnFake" BackgroundCssClass="backgrondModal" DropShadow="true" PopupControlID="pnlZoom" PopupDragHandleControlID="pnlZoom" />
<asp:Button runat="server" ID="btnFake" Style="display:none" />
</ContentTemplate>
</asp:UpdatePanel>
</div>
我正在尝试将弹出窗口定位在左侧:200px,顶部:100px。通过下面的
Set_X
和Set_Y
属性设置弹出窗口的左侧和顶部位置,并删除为面板pnlZoom
和更新面板上方的div设置的样式(位置,左侧和顶部)
modalpopup.set_X(200);
modalpopup.set_Y(100);
modalpopup.show();
更新1:根据您的评论,如果您想显示相对于触发单击的控件位置的模式弹出窗口,请执行以下操作。可以使用方法获取控件的偏移量
将onclick更改为pass此
以引用img/button对象
onclick = "fnZoomImage(this, this.src)"
您的fnZoomImage
函数将变为
function fnZoomImage(obj, imageUrl) {
.....
.....
var location = Sys.UI.DomElement.getLocation(obj);
var xPos = location.x;
var yPos = location.y;
xPos = xPos - 200; // adjust the value accordingly
yPos = yPos + obj.offsetHeight;
modalpopup.set_X(xPos);
modalpopup.set_Y(yPos);
modalpopup.show();
.....
.....
}
你不想要位置:绝对的,而不是固定的,谢谢你,丹尼斯。成功了。我猜这是关于屏幕而不是网页(网页不占用整个屏幕大小)。如果是这样的话,是否可以设置坐标wrt网页坐标?很高兴它能工作。。您甚至可以显示相对于所单击按钮位置的弹出窗口(弹出窗口将显示在按钮单击旁边,但并不总是位于固定的中心位置)。如果您需要此代码,请告诉我。我想你也应该能得到页面的坐标。谢谢你,丹尼斯。谢谢你的帮助。我想有代码显示旁边的弹出式点击位置。谢谢。@NoBullMan用替代方法的代码编辑了我的答案。