带有修复标题的可滚动 Gridview [重复]

Posted

技术标签:

【中文标题】带有修复标题的可滚动 Gridview [重复]【英文标题】:Scrollable Gridview with a fix header [duplicate] 【发布时间】:2012-12-11 22:42:26 【问题描述】:

可能重复:Fixed GridView Header with horizontal and vertical scrolling in asp.net

我有一个任务要设计来构建一个带有修复标题的可滚动网格视图。我试过用 Div 开发它

    <div id="DataDiv" style="overflow: auto; border: 1px solid olive; 
        width: 600px; height: 300px;" />

  <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="Gridview1_RowDataBound"
            ShowHeader="false" RowStyle-VerticalAlign="Bottom">
            <Columns>
                <asp:BoundField DataField="dbms_id" HeaderText="ID" ItemStyle Width="30px" />
                <asp:BoundField DataField="dbms" HeaderText="Dbms" ItemStyle-Width="50px" />
                <asp:BoundField DataField="version" HeaderText="Version" ItemStyle-Width="30px" />
            </Columns>
        </asp:GridView>
    </div>

但它不起作用,因为标题没有得到修复。

然后我又找到了一个代码,如

<div style=" background-repeat: repeat-x; height: 30px;
        width: 200px; margin: 0; padding: 0">
        <table cellspacing="0" cellpadding="0" rules="all" border="1" id="tblHeader" style="font-family: Arial;
            font-size: 10pt; width: 200px; color: Black; border-collapse: collapse; height: 100%;">
            <tr>
                <td style="width: 30px; text-align: center">
                   ID
                </td>
                <td style="width: 50px; text-align: center">
                    Dbms
                </td>
                <td style="width: 30px; text-align: center">
                    Version
                </td>
            </tr>
        </table>
    </div>
    <div style ="height:100px; width:617px; overflow:auto;">
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" OnRowDataBound="Gridview1_RowDataBound"
            ShowHeader="false" RowStyle-VerticalAlign="Bottom">
            <Columns>
                <asp:BoundField DataField="dbms_id" HeaderText="ID" ItemStyle-Width="30px" />
                <asp:BoundField DataField="dbms" HeaderText="Dbms" ItemStyle-Width="50px" />
                <asp:BoundField DataField="version" HeaderText="Version" ItemStyle-Width="30px" />
            </Columns>
        </asp:GridView>
    </div>

在这种方法中,我使用纯 html 设计标题。

现在的问题是,实现此要求的最佳方法是什么。

【问题讨论】:

通常它会显示与该问题重复的原始问题。现在怎么不见了? 【参考方案1】:

除了您的问题之外,您还应该了解以下几点:

1) 根据设计,表格单元格将自动调整大小并匹配最长单元格的内容,使表格可读。如果您通过固定其标题来破坏此“规则”您将不得不注意调整标题单元格的大小,因为标题不再受表格规则的约束。

2) Pure HTML/CSS solution 仅在您为所有单元格(表格和标题)设置静态长度时才有效。如果内容太长而无法容纳一个单元格并且不可能换行(我有时会使用德语名词,所以我知道这是可能的)一切都会分崩离析。

3)如果你想要一个动态的解决方案,你必须在每次内容变化时用 JS 重新计算表格单元格。

我想这很简单。如果您需要一些示例,请告诉我,我会为您提供一个。

玩得开心!

【讨论】:

【参考方案2】:

我做过几次这样的事情。

http://www.codeproject.com/Tips/471756/Fixed-Table-Header-atop-scrollable-GridView-in-ASP

我能给出的唯一提示是远离网格上的垂直线。很难让 gridview 上的线条和表格上的线条在浏览器中对齐。

【讨论】:

以上是关于带有修复标题的可滚动 Gridview [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用角度和离子制作带有固定标题的可滚动表格

适用于 iPad 的可滚动 GridView

滚动gridview时重复调用Gridview第一个位置

修复了带有排序功能的标题网格视图

uiscrollview 中的可重复内容 - Swift

GridView在android中的可扩展列表中