当页面加载时如何计算网格行的大小?

huangapple go评论104阅读模式
英文:

How to count grid row size when the page is loaded?

问题

我想根据同一页上的网格的大小设置一个 div 的可见性;当页面打开时加载网格。我该怎么做?我写了以下的 js 但是出现了错误。

  1. $( "#grid" ).on( "load", function() {
  2. var gridView = document.getElementById("<%=grid.ClientID %>");
  3. var rows = gridView.getElementsByTagName("tr");
  4. if (rows.length>0){
  5. isTecrubesiBos.Visible = true;
  6. }
  7. } );
英文:

I want to set visibility of a div according to the size of grid which are on the same page; grid is loaded when the page is opened How can I do this ? I wrote following js but took errors.

  1. &lt;asp:GridView ID=&quot;grid&quot; runat=&quot;server&quot; AutoGenerateColumns=&quot;false&quot; ShowHeader=&quot;false&quot; ShowFooter=&quot;false&quot;
  2. CssClass=&quot;table table-bordered table-condensed&quot;
  3. EmptyDataText=&quot;Kayıtlı İş Tecr&#252;besi Bilgisi Bulunmamaktadır.&quot;
  4. OnRowDataBound=&quot;OnGridRowDataBound&quot; OnRowCommand=&quot;OnGridRowCommand&quot; OnRowCreated=&quot;OnGridRowCreated&quot;
  5. DataKeyNames=&quot;KAYITNO&quot;
  6. RowStyle-CssClass=&quot;ozgecmis-grid-row&quot; AlternatingRowStyle-CssClass=&quot;ozgecmis-grid-row-alternate&quot; SelectedRowStyle-CssClass=&quot;ozgecmis-grid-row-selected&quot;&gt;
  7. &lt;Columns&gt;
  8. &lt;asp:TemplateField ItemStyle-CssClass=&quot;ozgecmis-data-key&quot;&gt;
  9. &lt;ItemTemplate&gt;
  10. &lt;asp:Button runat=&quot;server&quot; ID=&quot;dataKeyButton&quot; CommandArgument=&#39;&lt;%#DataBinder.Eval(Container.DataItem,&quot;KAYITNO&quot;) %&gt;&#39; Visible=&quot;false&quot; /&gt;
  11. &lt;/ItemTemplate&gt;
  12. &lt;/asp:TemplateField&gt;
  13. &lt;asp:TemplateField ItemStyle-CssClass=&quot;ozgecmis-data-command&quot; ItemStyle-VerticalAlign=&quot;Middle&quot;&gt;
  14. &lt;ItemTemplate&gt;
  15. &lt;a href=&quot;#&quot; class=&quot;btn btn-small btn-info&quot;&gt;Se&#231;&lt;/a&gt;
  16. &lt;/ItemTemplate&gt;
  17. &lt;/asp:TemplateField&gt;
  18. &lt;asp:TemplateField ItemStyle-CssClass=&quot;ozgecmis-data-text&quot;&gt;
  19. &lt;ItemTemplate&gt;
  20. &lt;%#FormatData(Eval(&quot;ISYERIUNVAN&quot;),Eval(&quot;GIRISTARIHSTR&quot;),Eval(&quot;CIKISTARIHSTR&quot;),Eval(&quot;ISTANIMI&quot;),Eval(&quot;SEKTOR&quot;),Eval(&quot;POZISYON&quot;),Eval(&quot;MESLEK&quot;),Eval(&quot;MESLEKUZMANLIK&quot;)) %&gt;
  21. &lt;/ItemTemplate&gt;
  22. &lt;/asp:TemplateField&gt;
  23. &lt;/Columns&gt;
  24. &lt;/asp:GridView&gt;
  25. $( &quot;#grid&quot; ).on( &quot;load&quot;, function() {
  26. var gridView = document.getElementById(&quot;&lt;%=grid.ClientID %&gt;&quot;);
  27. var rows = gridView.getElementsByTagName(&quot;tr&quot;)
  28. if (rows.length&gt;0){
  29. isTecrubesiBos.Visible = true;
  30. }
  31. } );

答案1

得分: 1

Your grid and div both are server side control, they change their id when page load. So after page load means document.ready show your div via document.getElementById("isTecrubesiBos").style.display = 'block'; .

Example:

  1. $(function() {
  2. var gridView = document.getElementById("grid").rows.length;
  3. if (gridView > 0) {
  4. document.getElementById("isTecrubesiBos").style.display = 'block';
  5. }
  6. });

If in any case, you need to hide div:

  1. document.getElementById("isTecrubesiBos").style.display = 'none';
英文:

Your grid and div both are server side control, they change there id when page load. So after page load means document.ready show your div via document.getElementById(&quot;&lt;%= isTecrubesiBos.ClientID %&gt;&quot;).style.display = &#39;block&#39;; .

Example:

  1. $(function() {
  2. var gridView = document.getElementById(&quot;&lt;%= grid.ClientID %&gt;&quot;).rows.length;
  3. if (gridView.length &gt; 0) {
  4. document.getElementById(&quot;&lt;%= isTecrubesiBos.ClientID %&gt;&quot;).style.display = &#39;block&#39;;
  5. }
  6. });

If any case, need to hide div :

  1. document.getElementById(&quot;&lt;%= isTecrubesiBos.ClientID %&gt;&quot;).style.display = &#39;none&#39;;

答案2

得分: 0

在加载网格并设置其数据源时执行此检查。

所以,可以这样写:

  1. <asp:GridView ID="GHotels" runat="server" AutoGenerateColumns="False"
  2. DataKeyNames="ID" CssClass="table">
  3. <Columns>
  4. <asp:BoundField DataField="FirstName" HeaderText="FirstName" />
  5. <asp:BoundField DataField="LastName" HeaderText="LastName" />
  6. <asp:BoundField DataField="HotelName" HeaderText="HotelName" />
  7. <asp:TemplateField HeaderText="Active" ItemStyle-HorizontalAlign="Center">
  8. <ItemTemplate>
  9. <asp:CheckBox ID="chkActive" runat="server"
  10. Checked='<%# Eval("Active") %>' />
  11. </ItemTemplate>
  12. </asp:TemplateField>
  13. <asp:BoundField DataField="Description" HeaderText="Description" />
  14. <asp:TemplateField HeaderText="Hotel Information" ItemStyle-HorizontalAlign="Center">
  15. <ItemTemplate>
  16. <asp:Button ID="cmdView" runat="server" Text="Edit" CssClass="btn"
  17. OnClick="cmdView_Click" />
  18. </ItemTemplate>
  19. </asp:TemplateField>
  20. </Columns>
  21. </asp:GridView>
  22. <asp:TextBox ID="isTecrubesiBos" runat="server"></asp:TextBox>

然后在代码中,可以这样做:

  1. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2. If Not IsPostBack Then
  3. LoadGrid
  4. End If
  5. End Sub
  6. Sub LoadGrid()
  7. Dim rstData As DataTable
  8. rstData = MyRst("SELECT * FROM tblHotelsA ORDER BY HotelName")
  9. isTecrubesiBos.Visible = rstData.Rows.Count > 0
  10. GHotels.DataSource = rstData
  11. GHotels.DataBind()
  12. End Sub

因此,我们在此时可以根据数据源的行数是否大于0来设置文本框的可见性。

英文:

Do that check WHEN you load the grid and set its data source.

So, say this:

  1. &lt;asp:GridView ID=&quot;GHotels&quot; runat=&quot;server&quot; AutoGenerateColumns=&quot;False&quot;
  2. DataKeyNames=&quot;ID&quot; CssClass=&quot;table&quot;&gt;
  3. &lt;Columns&gt;
  4. &lt;asp:BoundField DataField=&quot;FirstName&quot; HeaderText=&quot;FirstName&quot; /&gt;
  5. &lt;asp:BoundField DataField=&quot;LastName&quot; HeaderText=&quot;LastName&quot; /&gt;
  6. &lt;asp:BoundField DataField=&quot;HotelName&quot; HeaderText=&quot;HotelName&quot; /&gt;
  7. &lt;asp:TemplateField HeaderText=&quot;Active&quot; ItemStyle-HorizontalAlign=&quot;Center&quot;&gt;
  8. &lt;ItemTemplate&gt;
  9. &lt;asp:CheckBox ID=&quot;chkActive&quot; runat=&quot;server&quot;
  10. Checked=&#39;&lt;%# Eval(&quot;Active&quot;) %&gt;&#39; /&gt;
  11. &lt;/ItemTemplate&gt;
  12. &lt;/asp:TemplateField&gt;
  13. &lt;asp:BoundField DataField=&quot;Description&quot; HeaderText=&quot;Description&quot; /&gt;
  14. &lt;asp:TemplateField HeaderText=&quot;Hotel Information&quot; ItemStyle-HorizontalAlign=&quot;Center&quot;&gt;
  15. &lt;ItemTemplate&gt;
  16. &lt;asp:Button ID=&quot;cmdView&quot; runat=&quot;server&quot; Text=&quot;Edit&quot; CssClass=&quot;btn&quot;
  17. OnClick=&quot;cmdView_Click&quot; /&gt;
  18. &lt;/ItemTemplate&gt;
  19. &lt;/asp:TemplateField&gt;
  20. &lt;/Columns&gt;
  21. &lt;/asp:GridView&gt;
  22. &lt;asp:TextBox ID=&quot;isTecrubesiBos&quot; runat=&quot;server&quot;&gt;&lt;/asp:TextBox&gt;

And now in code, you can do this:

  1. Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  2. If Not IsPostBack Then
  3. LoadGrid
  4. End If
  5. End Sub
  6. Sub LoadGrid()
  7. Dim rstData As DataTable
  8. rstData = MyRst(&quot;SELECT * FROM tblHotelsA ORDER BY HotelName&quot;)
  9. isTecrubesiBos.Visible = rstData.Rows.Count &gt; 0
  10. GHotels.DataSource = rstData
  11. GHotels.DataBind()
  12. End Sub

So, we get/see this:

当页面加载时如何计算网格行的大小?

So, since the data source has a row count > 0, then we at that point in time are free to set the visible of the text box in question.

huangapple
  • 本文由 发表于 2023年7月6日 18:19:11
  • 转载请务必保留本文链接:https://go.coder-hub.com/76627801.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定