C# 为什么冻结GridView标头不起作用

C# 为什么冻结GridView标头不起作用,c#,html,asp.net,gridview,scroll,C#,Html,Asp.net,Gridview,Scroll,我在面板中有以下GridView,该面板具有溢出:滚动以允许滚动: <asp:Panel runat="server" ClientIDMode="Static" ID="pnlScroll" CssClass="pnlScroll"> <asp:GridView AlternatingRowStyle-BackColor="#E2E2E2" AutoGenerateColumns="false" OnSorting="yourTasksGV_Sorting" Allo

我在
面板
中有以下
GridView
,该面板具有
溢出:滚动
以允许滚动:

<asp:Panel runat="server" ClientIDMode="Static" ID="pnlScroll" CssClass="pnlScroll">
    <asp:GridView AlternatingRowStyle-BackColor="#E2E2E2" AutoGenerateColumns="false" OnSorting="yourTasksGV_Sorting" AllowSorting="true" ID="yourTasksGV" runat="server" ClientIDMode="Static" EmptyDataText="There is no data to display" OnRowDataBound="yourTasksGV_RowDataBound">
        <HeaderStyle CssClass="yourTasksGVHeader" />
        <Columns>
            <asp:BoundField DataField="Task Name" HeaderText="Task Name" SortExpression="TaskName" ItemStyle-Width="25%" ItemStyle-CssClass="taskTableColumn" />
            <asp:BoundField DataField="Department" HeaderText="Department" SortExpression="DepartmentName" ItemStyle-Width="25%" ItemStyle-CssClass="taskTableColumn" />
            <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="TheStatus" ItemStyle-Width="15%" ItemStyle-CssClass="taskTableColumn" />
            <asp:BoundField DataField="Due Date" HeaderText="Due Date" SortExpression="DueDate" ItemStyle-Width="20%" ItemStyle-CssClass="taskTableColumn" />
            <asp:HyperLinkField Target="_blank" DataNavigateUrlFields="Link" DataTextField="Task Name" DataNavigateUrlFormatString="" HeaderText="Task Details" SortExpression="TaskDetails" ItemStyle-Width="15%" ItemStyle-CssClass="taskTableColumn" />
        </Columns>
    </asp:GridView>
</asp:Panel>
当我滚动时,表头应该保持不变,而表的其余部分则滚动。但这并没有发生,因为我滚动的标题也滚动,并在视线之外


如何修改代码使其工作?(我正在IE8上测试它)

设置GridView
ShowHeader=“false”
并使用HTML表格为GridView创建单独的标题,并将GridView放置在表格的正下方。因此标题行始终固定在那里,我们可以滚动GridView并查看数据。 在html格式的GridView之前插入:

 <div style="width:478px;border:1px solid #084B8A;color:#ffffff;font-weight:bold;">
        <table bgcolor="#3090C7" rules="all" >
            <tr>
                <td style ="width:71px;">Task Name</td>
                <td style ="width:180px;" onclick="__doPostBack('ctl00$ContentMain$yourTasksGV','Sort$DepartmentName')">Department</td>
                <td style ="width:90px;">Status</td>
                <td style ="width:60px;">Due Date</td>
                <td style ="width:78px;">---</td>
            </tr>
        </table>
        </div>

任务名称
部门
地位
到期日
---

尝试删除.yourTasksGVHeader的顶部:并添加display:block。不,标题仍然会滚动显示内容:/I我有一些非常类似的东西,只是验证了它实际上不适用于IE8(这是一个内部网站,我们使用的是IE11)。该死。。。IE8还有其他解决方案吗?我以前使用过一些javascript解决方案,但我从来没有找到我特别喜欢的解决方案。这是一个例子。我最大的不满是,当表相对较大时,客户端的性能会受到影响。不幸的是,我很想这样做,除了,如果它在GridView之外,我将无法进行排序:/@SearchForKnowledge是的,但此解决方案在每种浏览器中都能工作。您可以查看生成的链接以获得默认标题,并在固定标题中重新创建该行为。JavaScript可能是最简单的方法。您仍然可以排序。只需在“header”表中放置一个链接按钮并进行排序。最重要的是:从IE10开始,表达式就不起作用,在其他浏览器中也根本不起作用。我使用其中一个GridView的pre-render事件来设置列宽,以便它们完美地排列。@martin,如果您介意的话,您能告诉我如何使用我的列宽吗?谢谢
 <div style="width:478px;border:1px solid #084B8A;color:#ffffff;font-weight:bold;">
        <table bgcolor="#3090C7" rules="all" >
            <tr>
                <td style ="width:71px;">Task Name</td>
                <td style ="width:180px;" onclick="__doPostBack('ctl00$ContentMain$yourTasksGV','Sort$DepartmentName')">Department</td>
                <td style ="width:90px;">Status</td>
                <td style ="width:60px;">Due Date</td>
                <td style ="width:78px;">---</td>
            </tr>
        </table>
        </div>