首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Jquery对话框大小调整仅在第一次打开时发生

Jquery对话框大小调整仅在第一次打开时发生
EN

Stack Overflow用户
提问于 2012-08-03 20:21:44
回答 2查看 348关注 0票数 3

我有一个JQuery的代码,一个包含带有任务列表的网格视图的div对话框。该对话框符合内容确定,但如果加载了数百个任务,对话框就会变得太大,不能手动调整大小,因此我需要编写一种方法,使其以可管理的大小打开。

在任何人提出建议之前,我尝试将div上的max- higher属性设置为500 we ,这很好,除非div不会填充整个对话框,如果对话框高于500 we,这是我们希望的。我还尝试直接在对话框上设置maxHeight属性,但这只在手动调整对话框大小时生效,而不是在对话框打开时生效。当对话框打开比屏幕更大时,无法完成。

因此,我编写了这段声明对话框的代码,如果加载了20多个任务,则应该将对话框的大小调整到500 So。这样,内部的div在任何时候都会完全填充对话框,并且对话框的大小仍然可以管理。

代码语言:javascript
运行
复制
function ShowReferedTasks(title, s, taskCount) {

    //On crée le dialog à partir de la même div       
    $('#litReferedTasks').dialog({
        autoOpen: true,
        modal: true,
        resizable: true,
        show: 'drop',
        hide: 'drop',
        width: 800,
        minHeight: 0,
        title: 'Tâche' + s + ' référée' + s + ' de ' + title
    });

    //if more than 20 refered tasks are found
    if (taskCount > 20) {        
        $('#litReferedTasks').dialog('option', 'height', 500);
        $('#litReferedTasks').dialog('option', 'position', 'center');
    }
}

从父网格视图的每一行中的一个按钮调用此代码,加载每一行的任务。

当我刷新页面并刷新缓存(ctrl+F5),然后打开一些任务列表时,会发生这样的情况。

  1. 如果我打开一个包含20多个任务(需要刷新的对话框)的任务列表,就可以很好地工作
  2. 如果我打开任何任务列表,即使是不需要调整大小的任务列表,也可以关闭它,打开一个任务超过20个任务的任务列表,对话框打开,网格视图被完全填充,但调整大小的无法工作,对话框太大,无法在屏幕上进行调整,不能手动调整大小。

基本上,调整代码的大小部分只适用于刷新页面和刷新缓存后打开的第一个对话框。我认为,在第一次打开对话框之后,一定要记住一些东西,但是我是一个JQuery和JS的新手,我找不到答案。

代码语言:javascript
运行
复制
<div id="litReferedTasks" style="background-color: White; display: none; overflow:auto; height:95%;">
    <asp:GridView ID="gvReferedTasks" runat="server" OnRowDataBound="gvReferedTasks_RowDataBound" Width="97.5%" Visible="false">        
    </asp:GridView>
    <asp:Label ID="lblNoReferedTasks" runat="server" Visible="false" Width="100%"></asp:Label>
</div>

有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-03 20:35:41

好的,如果在打开对话框后设置了选项,那么高度可能不会产生影响,但是如果将高度放入初始对话框创建代码中,则设置的高度应该很好:

代码语言:javascript
运行
复制
function ShowReferedTasks(title, s, taskCount) {

    var dialogOptions = {
        autoOpen: true,
        modal: true,
        resizable: true,
        show: 'drop',
        hide: 'drop',
        width: 800,
        minHeight: 0,
        title: 'Tâche' + s + ' référée' + s + ' de ' + title
    };

    //if more than 20 refered tasks are found
    if (taskCount > 20) {        
        dialogOptions.height = 500
    }

    //On crée le dialog à partir de la même div       
    $('#litReferedTasks').dialog(dialogOptions);
}
票数 3
EN

Stack Overflow用户

发布于 2012-08-03 20:37:17

我想你把.dialog函数搞得太复杂了.最简单的方法是在autoOpen设置为false的情况下创建一个对话框,而不是每次都尝试重新初始化它。我想你会有更好的运气:

代码语言:javascript
运行
复制
// Do this once when the document is ready
$(function() {  
    $('#litReferedTasks').dialog({
    autoOpen: false,
    modal: true,
    resizable: true,
    show: 'drop',
    hide: 'drop',
    width: 800,
    minHeight: 0
  });
});

function ShowReferedTasks(title, s, taskCount) {
    $('#litReferedTasks').dialog('option', 'title', 'Tâche' + s + ' référée' + s + ' de ' + title);
    if (taskCount > 20) {        
        $('#litReferedTasks').dialog('option', {
            height: 500,
            position: 'center'
        });
    }

    $('#litReferedTasks').dialog('open');
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11802759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档