【问题标题】:How to calculate how many lines (or records) can fit in the given page size如何计算给定页面大小可以容纳多少行(或记录)
【发布时间】:2011-06-21 08:02:58
【问题描述】:

我的问题是计算可以适合给定页面大小(英寸)的数据(字符串)。

我有一个应用程序可以在不使用任何报告控件的情况下创建普通的 HTML 报告。现在我必须在这个报告中提供分页支持。报告本质上是动态的,即列是在运行时决定的。

根据页面宽度,我想将列换行成多行。例如,如果页面宽度为 8",我只想在第一行中放置前 'n' 列,其余列可以显示在第二行(如果需要,可以显示更多行)。为此,我需要计算多少数据可以放入 8 英寸宽的线中。

同样,我想计算可以适合页面给定高度的数据高度。

总而言之,我如何计算以英寸为单位的给定页面大小可以容纳多少数据。

注意:计算还应考虑字体,因为它是在运行时决定的。

【问题讨论】:

    标签: c# asp.net reporting report


    【解决方案1】:

    我编写了一个函数来获取浏览器呈现的跨度的宽度,方法是将其添加到 DOM 检查 OffsetWidth 然后再次删除它。尽管我怀疑沿着这条路走下去会非常有效,但您可能可以将这一原则应用于其他 html 元素。我的应用程序需要这个,我只用它来查找字符串列表中最长的渲染像素宽度。如果我是你,我会考虑其他大型表的方法。

    功能如下:

    function GetTextWidth(text, font, fontSize) {
        var size = 0;
        var spanWidthTestEle = document.createElement("span");
        spanWidthTestEle.id = "spanWidthTest";
        spanWidthTestEle.style.fontFamily = font;
        spanWidthTestEle.style.fontSize = fontSize;
        spanWidthTestEle.innerText = text;
        document.body.appendChild(spanWidthTestEle);
        var spanWidthTest = document.getElementById("spanWidthTest");
        size = spanWidthTest.offsetWidth;
        document.body.removeChild(spanWidthTest);
        return size;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-25
      • 2011-04-15
      相关资源
      最近更新 更多