C# 打开对话框后,根据内容高度有条件地调整JQuery对话框的大小

C# 打开对话框后,根据内容高度有条件地调整JQuery对话框的大小,c#,javascript,jquery,asp.net,.net-3.5,C#,Javascript,Jquery,Asp.net,.net 3.5,今天早上的大部分时间我都是这样看的,但我没有发现任何东西能帮我做到这一点 目标 我试图在JQuery对话框中复制maxHeight选项的行为。 此选项仅在调整对话框大小后应用,我希望此属性在打开对话框时应用,而不是在调整大小时应用 除非发布一个新版本的补丁,否则我能做的就是解决问题 关于我的项目的信息 C中的ASP.NET3.5# 细节 我必须打开一个包含gridview(在对话框使用的div中)的对话框,在该对话框中,正常使用可以显示从1或2行到几十行的任何内容 我在上找到了一个解决方案,这意

今天早上的大部分时间我都是这样看的,但我没有发现任何东西能帮我做到这一点

目标 我试图在JQuery对话框中复制maxHeight选项的行为。 此选项仅在调整对话框大小后应用,我希望此属性在打开对话框时应用,而不是在调整大小时应用

除非发布一个新版本的补丁,否则我能做的就是解决问题

关于我的项目的信息 C中的ASP.NET3.5#

细节 我必须打开一个包含gridview(在对话框使用的div中)的对话框,在该对话框中,正常使用可以显示从1或2行到几十行的任何内容

  • 我在上找到了一个解决方案,这意味着在我的div上设置了“max height”属性,但是调整对话框的大小产生了一种奇怪的效果,我正试图消除这种效果:

  • 如果内容足够小(通常有两行的列表),则对话框很小,可以调整到更大的大小。asp:gridview不移动,使对话框变大只会在其下方和右侧添加空白

  • 但一旦再次拖动窗口边缘使其变小,白色区域将保持不变,向上滑动并减小gridview区域,最终将其减小为零

  • 将gridview设置为100%可以解决这一问题,但如果只使用几条线将窗口变大,则每条线都会有几十个像素高

  • 所以我决定用一个不可调整大小的对话框来固定高度,这样就不会有任何东西以不应该的方式移动,但小内容会在其下方填充空白,我们希望窗口能够调整

  • 最后,我决定尝试打开一个固定高度的对话框,然后调整它的大小,以适应我的内容,如果在同一函数中内容div小于500px高

    我的代码不起作用,我不知道该如何使用它,甚至不知道它是否可行

    这是我的JS:
    函数显示参考任务(标题){
    //关于弹出对话框
    document.getElementById('litReferedTasks')。style.display='';
    //关于même div一方的对话
    $('litReferedTasks')。对话框({
    自动打开:对,
    莫代尔:是的,
    可调整大小:正确,
    表演:'放下',
    隐藏:“放下”,
    宽度:800,
    最小高度:0,
    身高:500,
    标题:'T–che'+s+'référée'+s+'de'+标题
    });
    /*选项1(已使用):*/var heightDiv=document.getElementById('litReferedTasks').style.height;
    /*选项2:///var heightDiv=$(this).height($('#litReferedTasks').height());
    如果(高度div<500)
    {
    $('litReferedTasks')。对话框('option','height',heightDiv);
    /*备选方案我尝试了*//$(“#dialog”).dialog('option','height',heightDiv);
    }
    }
    
    这是我的部门:
    
    
    如您所见,我希望我的函数打开对话框,然后确定包含gridview的div的大小,如果大小小于500像素,我希望对话框高度调整为gridview,否则对于大内容,我将使用滚动条将其保持在500像素高

    谢谢你在这方面的帮助

    更新2: 下面的代码可以工作,但如果关闭我的对话框并重新打开它,则在大内容上调整大小失败。 知道为什么吗?基本上它只工作一次,直到我刷新页面并刷新缓存(Ctrl+F5)

    更新1: 我将我的js脚本和@Paul Graffam给我的东西结合使用:

    将div设置为
    inline block
    似乎已经奏效,但js完成了大部分工作:

    函数显示参考任务(标题){
    //关于même div一方的对话
    $('litReferedTasks')。对话框({
    自动打开:对,
    莫代尔:是的,
    可调整大小:正确,
    表演:'放下',
    隐藏:“放下”,
    宽度:800,
    最小高度:0,
    打开:功能(事件、用户界面){
    $(this.css({'overflow-y':'auto'});
    },
    标题:'T–che'+s+'référée'+s+'de'+标题
    });
    //调整对话框的大小,使其适合高达500px的内容,之后将自动溢出。
    var heightDiv=$('litReferedTasks').height();
    如果(heightDiv>450)$('litReferedTasks')。对话框('option','height',500);
    }
    
    然后,div填充整个对话框,当它变大时溢出。 首先打开对话框以适应div,不管它有多大,但随后查看div的大小并将对话框的大小调整为500px(如果大于500px)


    看起来它成功地做到了我想要的,在div上使用
    max height
    会带来大小限制和问题。

    我想出了一个简单的方法来实现这一点,就是将对话div的css设置为
    max height
    设置为500px,然后可以删除对话框中的高度设置。这样,超过500px的任何值都将设置为溢出,而小于该值的任何值都将自动调整大小,因为高度现在默认为自动

    由于gridview使用表,我认为将div的显示设置为
    display:inline block是很重要的
    并删除将显示设置为nothing的行

    我在这里用您的一些代码建立了一个示例:

    另外,我注意到您一直在使用
    document.getElementById
    ,但由于您使用的是jQuery,因此不需要这样做。相反,您可以通过执行以下操作来选择元素:
    $(“#litReferedTasks”)


    例如
    document.getElementById('litReferedTasks').style.height变为
    $('#litReferedTasks')。高度()

    谢谢你的回答,保罗。但是,我确实尝试在t上使用max height属性