我繼承了來自SQL顯示數據庫中數據使用ASP.netGridView
控制一個ASP.net web應用程序。如何使用ASP.net gridview顯示/隱藏字段?
問題是表中有超過20個字段。用戶不太可能希望一次看到全部20個字段,但同樣不合理的是,任何字段都可能被排除在顯示器之外。
這似乎是解決方案將允許用戶選擇顯示和隱藏客戶端的字段。
是否有顯示和隱藏ASP.netGridView
客戶端的各列的好方法?如果不是,我應該尋求什麼樣的解決方案?
我繼承了來自SQL顯示數據庫中數據使用ASP.netGridView
控制一個ASP.net web應用程序。如何使用ASP.net gridview顯示/隱藏字段?
問題是表中有超過20個字段。用戶不太可能希望一次看到全部20個字段,但同樣不合理的是,任何字段都可能被排除在顯示器之外。
這似乎是解決方案將允許用戶選擇顯示和隱藏客戶端的字段。
是否有顯示和隱藏ASP.netGridView
客戶端的各列的好方法?如果不是,我應該尋求什麼樣的解決方案?
我不是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的樣子(對不起這麼多模糊,不能風險張貼我們的內部記錄):
我在公司的內部網站上的幾個高級搜索頁,和我提供每列的複選框。在pageLoad中選擇默認值,但用戶可以在運行搜索之前更改他們想要的值。然後在代碼隱藏中動態生成sql,並更新sqlDataSource。網格應該設置爲自動生成列,然後你的好去。
編輯:對不起,我一開始並沒有看到客戶端的要求。雖然使用asp.net更新面板,但我的解決方案看起來像客戶端的快速代碼給用戶。每次選中或取消選中某個列時,您甚至可以更新網格。
如果我的解決方案有興趣,請告訴我,我可以發佈代碼示例。
感謝您的想法。我擔心我實施這樣的解決方案可能是不明智的。我的團隊中更高級的程序員特別不喜歡服務器端解決方案和'UpdatePanel'。我希望有一個解決方案可以即時顯示和隱藏列。 – 2011-05-02 16:42:28
我相信一個asp.net gridview呈現爲一個html表格。因此,您可以使用html輸入複選框爲用戶選擇列,然後顯示/隱藏JavaScript中的列。然而,我從來沒有在JS中做過這種類型的操作。 – MAW74656 2011-05-02 16:44:44
有關用於隱藏JavaScript中的gridview列的方法,請參閱http://forums.asp.net/t/1264178.aspx/1。 – MAW74656 2011-05-02 16:47:52
我認爲實施的解決方案非常類似於您所描述的解決方案,但後來我遇到了一個新問題:如何讓用戶按個別字段對數據進行排序...... – 2011-05-02 16:14:15
@Rice:您可以提供一個「DropDownList」字段從頂部進行排序,當用戶進行選擇時,頁面將按該列進行重新加載和排序。 – mellamokb 2011-05-02 16:39:50
確實如此,我沒有這樣的例子。我可能會嘗試使用字段名填充DropDownList,並基於此編程設置排序。 – pseudocoder 2011-05-02 16:42:07