获取gridview的行高度

本文关键字:高度 gridview 获取 | 更新日期: 2023-09-27 17:49:24

我做c# asp.net在web形式,我想得到网格视图的行高度,但不能,我总是显示0当我试图得到它。我在Stack Overflow中使用了其他帖子中的代码。

c#

foreach (GridViewRow row in gv.Rows)
{
   height = Convert.ToDecimal(row.Height.Value) + height;
}
html

<wc:ReportGridView ID="gv" runat="server" AutoGenerateColumns="false" AllowPrintPaging="true"
 CellPadding="4" ForeColor="Black" OnRowDataBound="gv_RowDataBound" ShowFooter="True"
tyle="font-family: 'Century Gothic'; font-size: small; z-index: -1; color: #000000;
 margin-top: 0px;" BorderColor="Black" BorderStyle="Solid" BorderWidth="3px">

我看到所有的评论都说他们可以工作,但为什么我不能?或者有其他的解决方案来获得行高,无论是c#还是JavaScript。

获取gridview的行高度

gridview的行高可以在大小上变化,因此您可以获得特定行的高度。

int x = grdvw1.Rows[0].Height;

也可以从行模板中获得:

int x = grdvw1.RowTemplate.Height

更新-对于WebForms,我不认为你可以通过服务器端编程得到这个高度,因为它取决于浏览器如何渲染。您可以通过使用客户端编程来尝试。不过,你可以等待专家的评论。如果客户端满足您的需求,您可以尝试下面的代码:

<script>
    $(document).ready(function () {
        $("#Button1").click(function () {
            debugger;
            var a = $("#gvd").height();
            alert(a);
        });
    });
</script>

Gridview应该在gvddiv下。

<div id="gvd">
        <asp:gridview runat="server" ID="gv" runat="server" AutoGenerateColumns="False" AllowPrintPaging="true"
 CellPadding="4" ForeColor="Black"  ShowFooter="True" rowstyle Height="20px"
tyle="font-family: 'Century Gothic'; font-size: small; z-index: -1; color: #000000;
 margin-top: 0px;" BorderColor="Black" BorderStyle="Solid" BorderWidth="3px" 
            DataKeyNames="CorporateEmployeeId" DataSourceID="SqlDataSource1">
            <Columns>
               //Bounded columns
            </Columns>
        </asp:gridview>
        </div>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:MyConnectionString %>" 
            SelectCommand="SELECT * FROM [mytable]"></asp:SqlDataSource>
    </div>

您可以使用JQuery/JavaScript获得每行的行高:

$(document).ready(function () {
//iterate over each row that has cells and log the height
     $("#<%=gv.ClientID%> tr:has(td)").each(function () {
         console.log($(this).height());
     });
});

我不相信你可以从代码后面得到行高度,因为表还没有在客户端上呈现,所以没有行高度。

尝试在您的GridView定义中添加一个<RowStyle>元素。

例如:

<wc:ReportGridView ID="gv" runat="server" ...>
  <RowStyle Height="40px" />
</wc:ReportGridView>

根据这个MSDN页面:

默认为Empty,表示不设置此属性。