首页 > 解决方案 > 冻结 Gridview 标题

问题描述

我希望标题冻结在顶部,因为我有超过 9000 行。我试过“固定”,但这看起来不是最好的。它固定在卷轴上,但看起来像是漂浮在原地。我该怎么做才能让顶部冻结?我尝试了一种 CSS 样式,但它也没有冻结标题。如果我可以冻结页眉,下一步就是冻结屏幕上的页脚,这样就可以创建新条目,而不必进入 9000 行的底部。

<asp:GridView id="myGridView" runat="server" AutoGenerateColumns="False" 
    CssClass="Grid"
    Overflow="auto"    
    AllowSorting="False" 
    CellPadding="4" 
    ForeColor="#333333" 
    GridLines="None"
    ShowFooter="True"
    DataKeyNames="RMANumber"  width="99%">
    <AlternatingRowStyle BackColor="LightGray" />
    <Columns>

    <asp:TemplateField HeaderText="RMA Number"  HeaderStyle-VerticalAlign="Middle"  HeaderStyle-HorizontalAlign="Left">
        <ItemTemplate>
            <asp:Label id="lblRMANumber" runat="server" ReadOnly="false" Text='<%# DataBinder.Eval(Container, "DataItem.RMANumber") %>'></asp:Label>
        </ItemTemplate>
        <EditItemTemplate>
            <asp:TextBox id="txtEditRMANumber" size="16" runat="server" ReadOnly="false" Text='<%# DataBinder.Eval(Container, "DataItem.RMANumber") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox id="txtAddRMANumber" size="16" runat="server"></asp:TextBox>
        </FooterTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Decon Form? Y/N" HeaderStyle-VerticalAlign="Middle"  HeaderStyle-HorizontalAlign="Left">
        <ItemTemplate>
            <asp:Label id="lblDeconForm" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.DeconForm") %>'></asp:Label>
        </ItemTemplate>
        <EditItemTemplate>
            <asp:TextBox id="txtEditDeconForm" size="16" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.DeconForm") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox id="txtAddDeconForm" size="16" runat="server"></asp:TextBox>
        </FooterTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Customer" HeaderStyle-VerticalAlign="Middle"  HeaderStyle-HorizontalAlign="Left">
        <ItemTemplate>
            <asp:Label id="lblCustomer" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Customer") %>'></asp:Label>
        </ItemTemplate>
        <EditItemTemplate>
            <asp:TextBox id="txtEditCustomer" size="16" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.Customer") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox id="txtAddCustomer" size="16" runat="server"></asp:TextBox>
        </FooterTemplate>
    </asp:TemplateField>

    <asp:TemplateField HeaderText="Problem / Solution Found" HeaderStyle-VerticalAlign="Middle"  HeaderStyle-HorizontalAlign="Left">
        <ItemTemplate>
            <asp:Label id="lblProblemSolutionFound" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.ProblemSolutionFound") %>'></asp:Label>
        </ItemTemplate>
        <EditItemTemplate>
            <asp:TextBox id="txtEditProblemSolutionFound" size="16" runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.ProblemSolutionFound") %>'></asp:TextBox>
        </EditItemTemplate>
        <FooterTemplate>
            <asp:TextBox id="txtAddProblemSolutionFound" size="16" runat="server"></asp:TextBox>
            <asp:Button id="btnAdd" runat="server" Text="Add" CommandName="Add" AutoPostBack="False"  ></asp:Button>
        </FooterTemplate>
    </asp:TemplateField>

    <asp:CommandField ShowEditButton="True" CancelText="Cancel" DeleteText="Delete" EditText="Edit" UpdateText="Update" HeaderText="Modify" 
        ShowDeleteButton="False" HeaderStyle-VerticalAlign="Middle"  HeaderStyle-HorizontalAlign="Left" 
        ButtonType="Image" CancelImageUrl="Images/Cancel.png" EditImageUrl="Images/Edit.png" UpdateImageUrl="Images/Update.png" ControlStyle-Width="60" ControlStyle-Height="20"/>
 
        <asp:TemplateField HeaderText="Delete" ShowHeader="true" HeaderStyle-VerticalAlign="Middle"  HeaderStyle-HorizontalAlign="Left" >
                <ItemTemplate>
                        <asp:ImageButton ID="DeleteButton" runat="server" ImageUrl="Images/Delete.png" Width="60" Height="20" VerticalAlign="Center"
                            CommandName="Delete"
                            AlternateText="Delete"  />
                </ItemTemplate>
        </asp:TemplateField>

    </Columns>

                <EditRowStyle BackColor="#ADD8E6" />
                <FooterStyle BackColor="#ADD8E6" Font-Bold="True" ForeColor="White" />
                <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
                <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
                <RowStyle BackColor="#EFF3FB" />
                <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
                <SortedAscendingCellStyle BackColor="#F5F7FB" />
                <SortedAscendingHeaderStyle BackColor="#6D95E1" />
                <SortedDescendingCellStyle BackColor="#E9EBEF" />
                <SortedDescendingHeaderStyle BackColor="#4870BE" />

</asp:GridView>

标签: asp.netvb.net

解决方案


为了将标题保持在顶部,我使用了一个脚本来复制标题并将其放入它自己的容器中。但是我仍然遇到页脚可见的问题。我决定在新页面中创建一个创建按钮,而不是处理页脚。用户将数据输入表单而不是 gridview 页脚更清晰。以同样的方式,我使用编辑记录按钮在新页面中打开记录以进行更新/编辑。我还让 gridview 页面按 desc 排序,只看到最近的 RMA,删除了重复的标题脚本,并使用了分页。没有理由查看所有记录,只是最近的。

            <asp:GridView ID="GridView1" runat="server" 
            AllowPaging="True"
            PageSize="10"
            AllowSorting="True" 
            AutoGenerateColumns="False" 
            DataKeyNames="RMANumber" 
            CellPadding="1" 
            ForeColor="#333333"
            DataSourceID="SqlDataSource1">
            <AlternatingRowStyle BackColor="LightGray" />
            <Columns>               
                <asp:CommandField ShowDeleteButton="False" ShowEditButton="True" HeaderStyle-VerticalAlign="Middle"  HeaderStyle-HorizontalAlign="Left" 
                    ButtonType="Image" CancelImageUrl="Images/Cancel.png" 
                    EditImageUrl="Images/Edit.png" UpdateImageUrl="Images/Update.png" 
                    ControlStyle-Width="60" ControlStyle-Height="20">
                <ControlStyle Height="20px" Width="60px"></ControlStyle>

                <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle"></HeaderStyle>
                </asp:CommandField>
                <asp:Boundfield DataField="RMANumber" HeaderText="RMA Number" ReadOnly="True" SortExpression="RMANumber" > <ItemStyle Width="5%" /> </asp:Boundfield>
                <asp:BoundField DataField="DconForm" HeaderText="Dcon Form" SortExpression="DconForm" > <ItemStyle Width="3%" /> </asp:BoundField>
                <asp:BoundField DataField="Customer" HeaderText="Customer" SortExpression="Customer" > <ItemStyle Width="10%" /> </asp:BoundField>
                <asp:BoundField DataField="ItemBeingReturned" HeaderText="Item(s) Being Returned" SortExpression="ItemBeingReturned" > <ItemStyle Width="10%" /> </asp:BoundField>
                <asp:BoundField DataField="ReasonForReturn" HeaderText="Reason For Return" SortExpression="ReasonForReturn" > <ItemStyle Width="15%" /> </asp:BoundField> 
                <asp:BoundField DataField="Dia" HeaderText="Dia" SortExpression="Dia" > <ItemStyle Width="7%" /> </asp:BoundField> 
                <asp:BoundField DataField="RMADate" HeaderText="RMA Date" SortExpression="RMADate" > <ItemStyle Width="5%" /> </asp:BoundField> 
                <asp:BoundField DataField="ReturnedDate" HeaderText="Returned Date" SortExpression="ReturnedDate" > <ItemStyle Width="5%" /> </asp:BoundField>
                <asp:BoundField DataField="DateShipped" HeaderText="Date Shipped" SortExpression="DateShipped" > <ItemStyle Width="5%" /> </asp:BoundField>
                <asp:BoundField DataField="Status" HeaderText="Status" SortExpression="Status" > <ItemStyle Width="5%" /> </asp:BoundField>
                <asp:BoundField DataField="PIKEContact" HeaderText="PIKE Contact" SortExpression="PIKEContact" > <ItemStyle Width="7%" /> </asp:BoundField>
                <asp:BoundField DataField="DiamondResults" HeaderText="Diamond Results" SortExpression="DiamondResults" > <ItemStyle Width="5%" /> </asp:BoundField>
                <asp:BoundField DataField="ProblemSolutionFound" HeaderText="Problem / Solution Found" SortExpression="ProblemSolutionFound" > <ItemStyle Width="15%" /> </asp:BoundField>
                

           
                
                <asp:TemplateField HeaderText="" ShowHeader="true" HeaderStyle-VerticalAlign="Middle"  HeaderStyle-HorizontalAlign="Left" >
                    <ItemTemplate>
                    <asp:ImageButton ID="DeleteButton" runat="server" ImageUrl="Images/Delete.png" Width="60" Height="20" VerticalAlign="Center"
                        CommandName="Delete"
                        AlternateText="Delete"  />
                    </ItemTemplate>

            <HeaderStyle HorizontalAlign="Left" VerticalAlign="Middle"></HeaderStyle>
                </asp:TemplateField>
            </Columns>
            <EditRowStyle BackColor="#ADD8E6" />
            <FooterStyle BackColor="#ADD8E6" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle BackColor="#EFF3FB" />
            <SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#F5F7FB" />
            <SortedAscendingHeaderStyle BackColor="#6D95E1" />
            <SortedDescendingCellStyle BackColor="#E9EBEF" />
            <SortedDescendingHeaderStyle BackColor="#4870BE" />

        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:PIKE_Intranet_DBConnectionString %>" 
            DeleteCommand="DELETE FROM [RMATable] WHERE [RMANumber] = @RMANumber" 
            InsertCommand="INSERT INTO [RMATable] ([RMANumber], [DconForm], [Customer], [ItemBeingReturned], [ReasonForReturn], [Dia], [RMADate], [ReturnedDate], [DateShipped], [Status], [PIKEContact], [DiamondResults], [ProblemSolutionFound]) VALUES (@RMANumber, @DconForm, @Customer, @ItemBeingReturned, @ReasonForReturn, @Dia, @RMADate, @ReturnedDate, @DateShipped, @Status, @PIKEContact, @DiamondResults, @ProblemSolutionFound)" 
            SelectCommand="SELECT * FROM [RMATable] ORDER BY [RMANumber] DESC" 
            UpdateCommand="UPDATE [RMATable] SET [DconForm] = @DconForm, [Customer] = @Customer, [ItemBeingReturned] = @ItemBeingReturned, [ReasonForReturn] = @ReasonForReturn, [Dia] = @Dia, [RMADate] = @RMADate, [ReturnedDate] = @ReturnedDate, [DateShipped] = @DateShipped, [Status] = @Status, [PIKEContact] = @PIKEContact, [DiamondResults] = @DiamondResults, [ProblemSolutionFound] = @ProblemSolutionFound WHERE [RMANumber] = @RMANumber">
            <DeleteParameters>
                <asp:Parameter Name="RMANumber" Type="String" />
            </DeleteParameters>
            <InsertParameters>
                <asp:Parameter Name="RMANumber" Type="String" />
                <asp:Parameter Name="DconForm" Type="String" />
                <asp:Parameter Name="Customer" Type="String" />
                <asp:Parameter Name="ItemBeingReturned" Type="String" />
                <asp:Parameter Name="ReasonForReturn" Type="String" />
                <asp:Parameter Name="Dia" Type="String" />
                <asp:Parameter Name="RMADate" Type="String" />
                <asp:Parameter Name="ReturnedDate" Type="String" />
                <asp:Parameter Name="DateShipped" Type="String" />
                <asp:Parameter Name="Status" Type="String" />
                <asp:Parameter Name="PIKEContact" Type="String" />
                <asp:Parameter Name="DiamondResults" Type="String" />
                <asp:Parameter Name="ProblemSolutionFound" Type="String" />
            </InsertParameters>
            <UpdateParameters>
                <asp:Parameter Name="DconForm" Type="String" />
                <asp:Parameter Name="Customer" Type="String" />
                <asp:Parameter Name="ItemBeingReturned" Type="String" />
                <asp:Parameter Name="ReasonForReturn" Type="String" />
                <asp:Parameter Name="Dia" Type="String" />
                <asp:Parameter Name="RMADate" Type="String" />
                <asp:Parameter Name="ReturnedDate" Type="String" />
                <asp:Parameter Name="DateShipped" Type="String" />
                <asp:Parameter Name="Status" Type="String" />
                <asp:Parameter Name="PIKEContact" Type="String" />
                <asp:Parameter Name="DiamondResults" Type="String" />
                <asp:Parameter Name="ProblemSolutionFound" Type="String" />
                <asp:Parameter Name="RMANumber" Type="String" />
            </UpdateParameters>
        </asp:SqlDataSource>
        <br />
    </div>
</form>

推荐阅读