如何计算给定页面大小中可以容纳的行数(或记录数)

时间:2011-06-21 08:02:59

标签: c# asp.net reporting report

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

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

根据页面宽度,我想将列包装在多行中。例如,如果页面宽度为8“,我想在第一行中只放置第一个'n'列,而在第二行中可以显示其余列(如果需要,可以显示更多行)。为此我需要计算多少数据可以适合8“宽的线。

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

总结一下,如何计算出以英寸为单位的给定页面大小的数据量。

注意:计算时还应考虑在运行时决定的字体。

1 个答案:

答案 0 :(得分:0)

我编写了一个函数来获取浏览器呈现的跨度的宽度,方法是将其添加到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;
}