如何用ASP.net gridview显示/隐藏字段?

时间:2011-05-02 15:42:25

标签: javascript asp.net gridview relational-database

我继承了一个 ASP.net Web应用程序,该应用程序使用 ASP.net GridView控件显示来自 SQL 数据库的数据

问题是表中有超过20个字段。用户不太可能希望同时看到所有20个字段,但同样难以理解的是,任何字段都可以从显示中排除。

似乎解决方案似乎是允许用户选择要显示的内容并隐藏客户端。

是否有一种很好的方式来显示和隐藏 ASP.net GridView 客户端的各个列?如果没有,我应该寻求什么样的解决方案?

2 个答案:

答案 0 :(得分:0)

我不是javascript大师所以我甚至不会尝试回答这部分问题。但是我遇到了类似的问题,因为您使用的屏幕宽度太多了。

我建议使用TemplateField将数据库中的列一起分组到GridView中的多字段列中。可以通过这种方式直观地压缩许多多字段数据。我将从我设计用于ManageEngine ServiceDesk安装的查找工具中给出一个示例:

        <asp:GridView ID="gridResults" runat="server" BorderColor="#223366" BorderWidth="0px"
            CellPadding="5" DataSourceID="dsResults" AutoGenerateColumns="False" DataKeyNames="ResID">
            <HeaderStyle BackColor="#223366" ForeColor="#F0F0F0" BorderColor="#223366" Font-Bold="true" />
            <RowStyle BackColor="#E0E0E0" ForeColor="#223366" BorderColor="#223366" HorizontalAlign="Left"
                VerticalAlign="Top" />
            <AlternatingRowStyle BackColor="#D0D0D0" ForeColor="#223366" BorderColor="#223366"
                HorizontalAlign="Left" VerticalAlign="Top" />
            <Columns>
                <asp:TemplateField HeaderText="Host Name">
                    <ItemTemplate>
                        <asp:Literal ID="Literal1" runat="server" Text='<%# "<a class=""BlueLink"" href=""https://mgmt-servicedesk.co.wood.wi.us/ViewWSDetails.do?wsId=" & Eval("ResID") & """>" & Eval("ResourceName") & "</a><br/>Serial #: " & Eval("SerialNo") & "<br/>Asset: " & Eval("AssetTag") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Status">
                    <ItemTemplate>
                        <asp:Literal ID="Literal1" runat="server" Text='<%# "Status: " & Eval("State") & "<br/>" & Eval("Manufacturer") & "<br/>" & Eval("Model") %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField HeaderText="Owner/Location">
                    <ItemTemplate>
                        <asp:Literal ID="Literal1" runat="server" Text='<%# "User: " & Eval("UserName") & "<br/>Dept: " & Eval("Department") & "<br/>" & Eval("Location")   %>' />
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <%# RenderDameWareLinks(Eval("ResourceName"))%>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
            <EmptyDataTemplate>
                No Results
            </EmptyDataTemplate>
        </asp:GridView>

渲染时,这就是gridview的样子(抱歉这么多模糊,不能冒险发布我们的内部记录):

enter image description here

答案 1 :(得分:0)

我公司的Intranet网站上有几个高级搜索页面,我为每一列提供了复选框。在pageLoad中选择默认值,但用户可以在运行搜索之前更改所需的默认值。然后在代码隐藏中动态生成sql,并更新sqlDataSource。网格应设置为自动生成列,然后你的好处。

编辑:抱歉,我最初没有看到客户端要求。虽然使用asp.net更新面板,我的解决方案看起来像是用户的快速客户端代码。您甚至可以在每次选中或取消选中列时更新网格。

如果感兴趣我的解决方案,请告诉我,我可以发布代码示例。