FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 8380|回复: 7
打印 上一主题 下一主题

Grid高度设置技巧

[复制链接]
跳转到指定楼层
楼主
发表于 2012-4-12 13:23:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Landroid 于 2012-4-12 13:30 编辑

情景描述:
在实际项目中,我们可能会遇到各种诡异怪异令人纠结的需求,比如说:我要使grid填充页面剩余部分,不设置宽度grid的宽度会自适应,,但是高度不设置,就会根据grid中的内容自适应,而我需要grid的高度自动根据window的高度变化。。。
看到论坛有人问这类问题,分享一下我的方法:
方法描述:
添加如下代码到
<body>
....
....
<!-- 大约是添加到这儿吧-->
</body>
  1.     <script type="text/javascript">
  2.         function onReady() {
  3.             var form2 = Ext.getCmp('<%=Form2.ClientID%>');
  4.             var grid1 = Ext.getCmp('<%=Grid1.ClientID%>');
  5.             var bodySize = Ext.getBody().getSize();
  6.             var form2Size = form2.getSize();
  7.             grid1.setHeight(bodySize.height - form2Size.height);
  8.         }
  9.     </script>
复制代码


代码解释
我测试的用例中,页面中元素结构如下
<body>
...
<ext:Form id="form2"></ Form >
<ext:Grid id="grid1"></ Grid >
<script>....</script>
</body>

var bodySize = Ext.getBody().getSize(); //是获取页面body的高度和宽度
var form2Size = form2.getSize();//是获取grid上的form的高度和宽度
grid1.setHeight(bodySize.height - form2Size.height); //设置grid高度,为:body高度 - form2高度


注意,假如给grid设置了AutoHeight="true",请修改为false



实际使用中,根据自己的需求改吧
截图就不截了,自己试试看?
沙发
发表于 2012-4-12 15:56:30 | 只看该作者
恩。通过JS修改大小的方式也可以,不过要注意在页面大小改变时重新计算才行。

其实有更简单的办法 - 布局。

比如这个页面:http://extasp.net/#/iframe/grid_iframe.aspx
用的就是VBox布局:
  1. <ext:Panel ID="Panel7" runat="server" EnableBackgroundColor="true" BodyPadding="3px"
  2.         EnableLargeHeader="true" Title="Panel" ShowBorder="false" ShowHeader="True" Layout="VBox"
  3.         BoxConfigAlign="Stretch">
  4.         <Items>
  5.             <ext:Form ID="Form5" ShowBorder="False" BodyPadding="5px" EnableBackgroundColor="true"
  6.                 ShowHeader="False" runat="server">
  7.                 ...
  8.             </ext:Form>
  9.             <ext:Panel ID="Panel8" ShowBorder="True" ShowHeader="false" BoxFlex="1" Layout="Fit"
  10.                 runat="server">
  11.                 <Toolbars>
  12.                     ...
  13.                 </Toolbars>
  14.                 <Items>
  15.                     <ext:Grid ID="Grid2" Title="Grid2" PageSize="80" ShowBorder="false" AllowPaging="true"
  16.                         OnPageIndexChange="Grid2_PageIndexChange" ShowHeader="False" runat="server" EnableCheckBoxSelect="True"
  17.                         DataKeyNames="Id,Name" OnSort="Grid2_Sort" EnableRowNumber="True">
  18.                         ...
  19.                     </ext:Grid>
  20.                 </Items>
  21.             </ext:Panel>
  22.         </Items>
  23.     </ext:Panel>
复制代码
板凳
 楼主| 发表于 2012-4-12 17:08:20 | 只看该作者
support 发表于 2012-4-12 15:56
恩。通过JS修改大小的方式也可以,不过要注意在页面大小改变时重新计算才行。

其实有更简单的办法 - 布局 ...

不错的方法~~
当页面大小改变时,我的写法就不行了~
地板
发表于 2012-4-13 14:43:57 | 只看该作者
高度不设置,就会根据grid中的内容自适应?
我这绑定后只能显示一行,还有滚动条。。。
5#
 楼主| 发表于 2012-4-13 15:15:50 | 只看该作者
yezie 发表于 2012-4-13 14:43
高度不设置,就会根据grid中的内容自适应?
我这绑定后只能显示一行,还有滚动条。。。 ...

?我的是3.1.3版本,浏览器chrome,ie9。。。按内容自适应

AutoHeight默认值为false

仔细查看我的代码,没有其他设置影响高度。。显示正常。。
6#
发表于 2012-4-14 14:54:10 | 只看该作者
Landroid 发表于 2012-4-13 15:15
?我的是3.1.3版本,浏览器chrome,ie9。。。按内容自适应

AutoHeight默认值为false

我知道原因了,我的页面是先显示空白grid,通过按钮去绑定,就不能自适应高度了。。。
7#
 楼主| 发表于 2012-4-14 18:17:26 | 只看该作者
yezie 发表于 2012-4-14 14:54
我知道原因了,我的页面是先显示空白grid,通过按钮去绑定,就不能自适应高度了。。。 ...

根据内容高度变化的话,AutoHeight="true"
根据窗体高度的话,使用布局,或者js代码设置高度,或者把grid放在region margin="center"中
8#
发表于 2012-6-17 03:12:15 | 只看该作者
如果页面,只需要一个Grid的话,我直接设置AutoSizePanelID 为Grid的Id,就可以自适应了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-11-23 07:09 , Processed in 0.046847 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表