Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui 为什么我的对话框第一次在屏幕上显示得更低,之后每次都显示得更高?_Jquery Ui_Asp.net Mvc 4_Modal Dialog - Fatal编程技术网

Jquery ui 为什么我的对话框第一次在屏幕上显示得更低,之后每次都显示得更高?

Jquery ui 为什么我的对话框第一次在屏幕上显示得更低,之后每次都显示得更高?,jquery-ui,asp.net-mvc-4,modal-dialog,Jquery Ui,Asp.net Mvc 4,Modal Dialog,我正在构建一个MVC4应用程序,在一个表中有许多单元格,用户将单击这些单元格以获取有关该单元格内容的其他数据,因此我弹出了一个模式jQuery对话框。我并没有声称这样做是正确的,但我有一个Ajax表单,它只包含一个隐藏字段,用于将单击的单元格内容的id发送给控制器 @Html.Hidden("selectedStatusId") 然后单击,我获取id并将其放入隐藏: $(".statusCell").click(function () { var statusId = this.id;

我正在构建一个MVC4应用程序,在一个表中有许多单元格,用户将单击这些单元格以获取有关该单元格内容的其他数据,因此我弹出了一个模式jQuery对话框。我并没有声称这样做是正确的,但我有一个Ajax表单,它只包含一个隐藏字段,用于将单击的单元格内容的id发送给控制器

@Html.Hidden("selectedStatusId")
然后单击,我获取id并将其放入隐藏:

$(".statusCell").click(function () {
    var statusId = this.id;
    document.getElementById("getStatusDataForm").selectedStatusId.value = statusId;
    $("#getStatusDataForm").submit();
    $("#StatusData").dialog("open");
});
最后一行的下一行是提交表单,该表单将部分返回到空div:

<div id="StatusData" title="Status Details" class="selectedStatusDetail" style="display: none"></div>

然后配置对话框:

$(function () {
  $("#StatusData").dialog({
    autoOpen: false,
    modal: true,
    resizable: false,
    draggable: true,
    width: 800,
    show: {
        effect: "fade",
        duration: 100
    },
    hide: {
        effect: "fade",
        duration: 100
    },
    create: function (event, ui) {
        // Center the dialog each time it re-opens
        $(this).dialog('widget')
            .css({ position: 'fixed' })
            .position({ my: 'center', at: 'center', of: window, collision: 'fit' });
    },
    open: function (event, ui) {
        // Remove the closing 'x' from the toolbar and replace it with the text 'Close'
        $('.ui-dialog-titlebar-close')
            .removeClass("ui-dialog-titlebar-close")
            .html('<span style="float:right; margin-right: 10px; font-weight: normal;">Close</span>');
    },
});
$(函数(){
$(“#状态数据”)。对话框({
自动打开:错误,
莫代尔:是的,
可调整大小:false,
真的,
宽度:800,
展示:{
效果:“褪色”,
持续时间:100
},
隐藏:{
效果:“褪色”,
持续时间:100
},
创建:函数(事件、用户界面){
//每次重新打开对话框时,将其居中
$(this.dialog('widget'))
.css({position:'fixed'})
.位置({my:'center',at:'center',of:window,collision:'fit'});
},
打开:功能(事件、用户界面){
//从工具栏中删除关闭“x”,并将其替换为文本“Close”
$(“.ui对话框标题栏关闭”)
.removeClass(“ui对话框标题栏关闭”)
.html(“关闭”);
},
});
因此,我第一次点击其中一个单元格时,对话框会在下方显示107px,从那时起每次都会显示。除此之外,它工作得非常好。 我已经读过关于在加载对话框之前您不想显示的内容,我怀疑可能会发生这种情况,因为对db的调用是异步的,并且我在知道返回数据之前创建了对话框。但这是我能够让其余所有工作正常进行的唯一方法。
我需要重构整个混乱局面还是有修复方法?

你能发布ajax函数还是用小提琴重新创建它?我认为你的思路是正确的,如果是这样,最简单的解决方案是将你通过ajax添加的内容以div-width-fixed维度进行包装。我没有想到这一点。问题是我不知道返回内容的大小数据,我不希望一个过大的对话框或滚动,如果我可以帮助它。