获取gridview的行高

时间:2016-06-27 02:38:34

标签: c# asp.net

我正在以网络形式做c#asp.net,我想得到网格视图的行高但不能,当我试图得到它时我总是显示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。

3 个答案:

答案 0 :(得分:0)

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应位于 gvd div。

<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>

答案 1 :(得分:0)

您可以使用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());
     });
});

我不相信您可以从代码隐藏中获取行高,因为该表尚未在客户端上呈现,因此没有行高。

答案 2 :(得分:0)

尝试在<RowStyle>定义中添加GridView元素。

例如:

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

根据this MSDN page

  

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