2016-06-27 5 views
3

Im делая C# asp.net в веб-форме, я хотел бы получить высоту строки сетки, но не могу, я всегда показываю 0, когда я пытался ее получить. Я использую код из другого сообщения внутри Stack Overflow.Получить высоту строки gridview

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.

+0

Можете ли вы показать нам, как определяется GridView? –

+0

@devlin carnate Извините, каково ваше значение под «как определено gridview»? – 120196

+1

Покажите нам свой код на странице aspx, где у вас есть '

ответ

0

Строка сетки серого может варьироваться в зависимости от размера, поэтому вы можете получить высоту определенного ряда.

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

Он также доступен из шаблона строки:

int x = grdvw1.RowTemplate.Height 

Обновлено -Для WebForms, я не думаю, что вы можете получить эту высоту с помощью программирования на стороне сервера, поскольку это зависит от того, как браузер render.You может попробовать это, используя программирование на стороне клиента. До тех пор, пока вы можете ждать комментариев экспертов. В случае, если клиентская сторона удовлетворит ваши потребности, вы можете попробовать под кодом.

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

Gridview должен быть под GVD дел.

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

Это не работает для меня, я думаю, что ваш ответ за победу форма, для моего есть .Height.Value, но и получить 0. – 120196

+0

ok.просто дайте мне некоторое время, чтобы проверить мой dev – Vicky

+0

вы не получите высоту строки, поскольку она зависит от того, как браузер отображает ее. Единственная возможность - через клиентскую сторону. Я не думаю, что программирование на стороне сервера даст высоту строки gridview в веб-формах. См. Обновленный ответ. – Vicky

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()); 
    }); 
}); 

Я не верю, что вы можете получить высоту строки из кода позади, поскольку таблица еще не вынесено на клиенте, поэтому нет высоты строки.

+0

Я думал, что, если я попытаюсь измерить gridview, что alread, отображаемый нажатой кнопкой? – 120196

+0

Если вы имеете в виду, что хотите сделать обратную передачу при нажатии кнопки и получить высоту от кода позади, вы не сможете. GridView больше не отображается, когда публикуется страница. Вы можете получить высоту с помощью приведенного выше кода и поместить результат в скрытое поле в столбце вашего GridView и получить значение из этого скрытого поля в каждой строке кода. –

+0

ya, в настоящее время я делаю этот способ, используя javascript. Но я пытаюсь найти кого-то, кто может это сделать в коде. Благодаря! – 120196

0

Попробуйте добавить элемент <RowStyle> в ваш GridView defintion.

Например:

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

По this MSDN page:

по умолчанию Empty, который указывает на то, что это свойство не установлено.

+0

Привет @dariom, я хотел бы получить высоту из-за различной длины записи, потому что мое gridview распространяется до второй страницы, это не то, что я установил перед тем, как я ее обработал. Спасибо. – 120196