TCS54321 Ответов: 1

Замораживание столбцов и заголовков Gridview не работает с главной страницей.


я пытаюсь заморозить заголовок и столбец asp gridview. и я использую Замораживание строк и столбцов таблицы с помощью JavaScript - GridViewScroll.js | CSS скрипт[^] этот код в моем asp gridview без использования главной страницы, и он отлично работает. но когда я пробую этот код в другой форме с главной страницей, он не работает. может ли кто-нибудь предложить мне решение?

Что я уже пробовал:

вот мой код:-

Главная страница:-

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="LoginMaster.master.cs"
    Inherits="LoginMaster" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en">
<head>
    <title>master page</title>
    <link href="../FrezeeStyle/css/web.css" rel="stylesheet" />
    <script type="text/javascript" src="../FrezeeStyle/js/gridviewscroll.js"></script>


    <asp:ContentPlaceHolder ID="Head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body >
    <form id="form1" runat="server" enctype="multipart/form-data" method="post">
        

            <asp:ContentPlaceHolder ID="Content" runat="server">
            </asp:ContentPlaceHolder>

</form>
</body>
</html>


Страница содержимого:-

<%@ Page Title="" Language="C#" MasterPageFile="Master.master" AutoEventWireup="true" CodeFile="Freeze.aspx.cs" Inherits="Freeze" %>

<asp:Content ID="Content1" ContentPlaceHolderID="Head" Runat="Server">

    <script type="text/javascript">
        var gridViewScroll = null;
        window.onload = function () {
            gridViewScroll = new GridViewScroll({
                elementID: "gvtest",
                width: "1200px",
                height: "350px",
                freezeColumn: true,
                freezeFooter: true,
                freezeColumnCssClass: "GridViewScrollItemFreeze",
                freezeFooterCssClass: "GridViewScrollFooterFreeze",
                freezeHeaderRowCount: 1,
                freezeColumnCount: 3,
                onscroll: function (scrollTop, scrollLeft) {
                    console.log(scrollTop + " - " + scrollLeft);
                }
            });
            gridViewScroll.enhance();
        }
    </script>

</asp:Content>


<asp:Content ID="Content2" ContentPlaceHolderID="Content" Runat="Server">


   <div id='table-container' style="white-space: nowrap;width:1200px">
  <asp:GridView ID="gvtest" runat="server" GridLines="Both" CellPadding="3" AutoGenerateColumns="false" HeaderStyle-BackColor="Blue" HeaderStyle-ForeColor="White" >
                        <Columns>
                            <asp:BoundField DataField="test1" HeaderText="Username"  ItemStyle-BackColor="Gray"/>
                            <asp:BoundField DataField="test2" HeaderText="Full Name"   ItemStyle-BackColor="Gray" />
                            <asp:BoundField DataField="test3" HeaderText="EmailID" ItemStyle-BackColor="Gray" />
                            <asp:BoundField DataField="test4" HeaderText="Is User Active?"   />
                            <asp:BoundField DataField="test5" HeaderText="Full Name"     />
                            <asp:BoundField DataField="test6" HeaderText="EmailID"  />
                            <asp:BoundField DataField="test7" HeaderText="Is User Active?"    />
                            <asp:BoundField DataField="test1" HeaderText="Username" />
                            <asp:BoundField DataField="test2" HeaderText="Full Name"   />
                            <asp:BoundField DataField="test3" HeaderText="EmailID"  />
                            <asp:BoundField DataField="test4" HeaderText="Is User Active?"   />
                            <asp:BoundField DataField="test5" HeaderText="Full Name"     />
                            <asp:BoundField DataField="test6" HeaderText="EmailID"  />
                            <asp:BoundField DataField="test7" HeaderText="Is User Active?"    />
                            <asp:BoundField DataField="test1" HeaderText="Username" />
                            <asp:BoundField DataField="test2" HeaderText="Full Name"   />
                            <asp:BoundField DataField="test3" HeaderText="EmailID"  />
                            <asp:BoundField DataField="test4" HeaderText="Is User Active?"   />
                            <asp:BoundField DataField="test5" HeaderText="Full Name"     />
                            <asp:BoundField DataField="test6" HeaderText="EmailID"  />
                            <asp:BoundField DataField="test7" HeaderText="Is User Active?"    />
                        </Columns>
                    </asp:GridView>
</div>

</asp:Content>


код на стороне сервера:-

на сетке привязки просто добавьте эти строки:-
if (gvtest.Rows.Count > 0)
       {
           gvtest.UseAccessibleHeader = true;
           gvtest.HeaderRow.TableSection = TableRowSection.TableHeader;
       }

1 Ответов

Рейтинг:
7

F-ES Sitecore

elementID: "gvtest",


Ваш js присоединяется к элементу с идентификатором "gvtest". Просмотрите источник вашей страницы в браузере, видите ли вы какой-либо элемент с идентификатором "gvtest"? При использовании главных страниц идентификаторы, используемые в html-элементах, не всегда совпадают с идентификаторами, используемыми в разметке на стороне сервера. Чтобы получить идентификатор фактическое использование элемента управления вам нужно использовать ClientID

elementID: "<%=gvtest.ClientID%>",


TCS54321

это работа для меня. Огромное спасибо.. ты спасаешь мне жизнь.