【问题标题】:Resizing grid by client screen size按客户端屏幕大小调整网格大小
【发布时间】:2013-01-23 07:47:18
【问题描述】:

我想在页面加载时按客户端屏幕大小设置数据网格的大小。有没有办法在页面加载或服务器端的其他页面事件时获得这个大小?

我使用Request.Browser.ScreenPixelsWidthRequest.Browser.ScreenPixelsHeight,但这些尺寸不正确。这些尺寸始终为 640 * 480。

【问题讨论】:

  • 您可以使用百分比大小吗?尝试将宽度高度设置为百分比,然后在调整浏览器窗口大小时查看它是否调整大小。
  • @mortb:不可能;

标签: c# asp.net datagrid client screen


【解决方案1】:

Request.Browser.ScreenPixelsWidthRequest.Browser.ScreenPixelsHeight 无法在服务器端提供客户端屏幕分辨率。

最好的方法是使用 javascript-

<%if (!this.IsPostBack)
{%>
<script language="javascript" type="text/javascript">
var rowURL = window.location.href;
var screenWidth = window.screen.availWidth;
if (rowURL.indexOf("screen_width") == -1)
window.location.href = window.location.href + "?screen_width=" + screenWidth;
</script>
<%}%>

在页面的“body”标签中使用此脚本。 它只是将“screen_width”参数附加到查询字符串并刷新页面。 通过这种方式,您可以从查询字符串中获取服务器端“screen_width”的值。

【讨论】:

    【解决方案2】:

    您可以使用 Javascript 来获取视口的宽度和高度。然后通过隐藏的表单输入或 ajax 将值传回。

    var width = $(window).width();
    var height = $(window).height();
    

    首先,添加这些隐藏的表单输入来存储宽度和高度直到回发。

    <asp:HiddenField ID="width" runat="server" />
    <asp:HiddenField ID="height" runat="server" />
    

    接下来我们要获取窗口(视口)的宽度和高度。 JQuery 对此有两种方法,恰当地命名为 width() 和 height()。

    将以下代码添加到您的 .aspx 文件中的 head 元素中。

    <script type="text/javascript">
    $(document).ready(function() {
    
        $("#width").val() = $(window).width();
        $("#height").val() = $(window).height();    
    
    });
    </script>
    

    这将导致浏览器窗口的宽度和高度在回发时可用。只需像这样访问隐藏的表单输入:

    var TheBrowserWidth = width.Value;
    var TheBrowserHeight = height.Value;
    

    希望对你有帮助....

    【讨论】:

    • 我需要在其中一个页面事件中使用这些尺寸,但您的解决方案不适合我。
    • 您需要在客户端或服务器端事件中调整大小吗?
    • 我需要调整服务器大小。
    • 如果您愿意,您可以访问服务器端的隐藏字段值。
    • 我在 page_load 上需要这些值,但您的解决方案在那之后获得了值。
    猜你喜欢
    • 1970-01-01
    • 2017-12-02
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2014-06-20
    • 1970-01-01
    相关资源
    最近更新 更多