我继承了一个 ASP.net Web应用程序,该应用程序使用 ASP.net GridView
控件显示来自 SQL 数据库的数据
问题是表中有超过20个字段。用户不太可能希望同时看到所有20个字段,但同样难以理解的是,任何字段都可以从显示中排除。
似乎解决方案似乎是允许用户选择要显示的内容并隐藏客户端。
是否有一种很好的方式来显示和隐藏 ASP.net GridView
客户端的各个列?如果没有,我应该寻求什么样的解决方案?
答案 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的样子(抱歉这么多模糊,不能冒险发布我们的内部记录):
答案 1 :(得分:0)
我公司的Intranet网站上有几个高级搜索页面,我为每一列提供了复选框。在pageLoad中选择默认值,但用户可以在运行搜索之前更改所需的默认值。然后在代码隐藏中动态生成sql,并更新sqlDataSource。网格应设置为自动生成列,然后你的好处。
编辑:抱歉,我最初没有看到客户端要求。虽然使用asp.net更新面板,我的解决方案看起来像是用户的快速客户端代码。您甚至可以在每次选中或取消选中列时更新网格。如果感兴趣我的解决方案,请告诉我,我可以发布代码示例。