【发布时间】:2014-06-30 12:55:10
【问题描述】:
我有一个类似这样的网格视图。它绑定在数据源中。现在,我需要隐藏其行没有可用数据的列。在下面的表格示例中,HeaderText 为“2ND”的列应该被隐藏,因为它没有数据。
Protected Sub grdsf_DataBound(ByVal sender As Object, ByVal e As System.EventArgs) Handles grdsf.DataBound
Dim rowscount As Integer = grdsf.Rows.Count
Dim columnscount As Integer = grdsf.Columns.Count
Dim k As Integer = 0
For j As Integer = 1 To columnscount - 1 Step j + 1
For i As Integer = 0 To rowscount - 1 step i + 1
Dim x As String = grdsf.Rows(i).Cells(j).Text
If x = String.Empty Then
k = k + 1
End If
Next
Dim col As DataControlField = grdsf.Columns(j)
If k = rowscount Then
col.Visible = False
End If
Next
End Sub
列的循环从索引 1 开始,因为不应隐藏第一列..
<asp:GridView ID="grdsf" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#CCCCCC" BorderStyle="None" BorderWidth="1px" CellPadding="3" DataSourceID="SqlDataSource1" GridLines="Horizontal" ShowFooter="True" Width="90%">
<RowStyle ForeColor="#000066" />
<FooterStyle BackColor="White" ForeColor="#000066" />
<PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
<SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#006699" Font-Bold="True" ForeColor="White" />
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" SortExpression="ID" />
<asp:BoundField DataField="LNAME" HeaderText="LNAME" SortExpression="LNAME" />
<asp:BoundField DataField="OYRGR" HeaderText="OYRGR" SortExpression="OYRGR" />
<asp:BoundField DataField="Swimming" HeaderText="Swimming" ReadOnly="True" SortExpression="Swimming" NullDisplayText="" />
<asp:BoundField DataField="Soccer" HeaderText="Soccer" ReadOnly="True" SortExpression="Soccer" NullDisplayText="" />
<asp:BoundField DataField="Softball" HeaderText="Softball" ReadOnly="True" SortExpression="Softball" NullDisplayText="" />
<asp:BoundField DataField="Baseball" HeaderText="Baseball" ReadOnly="True" SortExpression="Baseball" NullDisplayText="" />
<asp:BoundField DataField="Volleyball" HeaderText="Volleyball" ReadOnly="True" SortExpression="Volleyball" />
<asp:BoundField DataField="Basketball" HeaderText="Basketball" ReadOnly="True" SortExpression="Basketball" />
<asp:BoundField DataField="Martial Arts" HeaderText="Martial Arts" ReadOnly="True" SortExpression="Martial Arts" />
<asp:BoundField DataField="Karate" HeaderText="Karate" ReadOnly="True" SortExpression="Karate" />
<asp:BoundField DataField="Arnis" HeaderText="Arnis" ReadOnly="True" SortExpression="Arnis" />
<asp:BoundField DataField="Taekwondo" HeaderText="Taekwondo" ReadOnly="True" SortExpression="Taekwondo" />
<asp:BoundField DataField="Judo" HeaderText="Judo" ReadOnly="True" SortExpression="Judo" />
<asp:BoundField DataField="Boxing" HeaderText="Boxing" ReadOnly="True" SortExpression="Boxing" />
<asp:BoundField DataField="Wrestling" HeaderText="Wrestling" ReadOnly="True" SortExpression="Wrestling" />
<asp:BoundField DataField="Unit Physical Fitness" HeaderText="Unit Physical Fitness" ReadOnly="True" SortExpression="Unit Physical Fitness" />
<asp:BoundField DataField="Gymnastics" HeaderText="Gymnastics" ReadOnly="True" SortExpression="Gymnastics" />
<asp:BoundField DataField="Health and Fitness" HeaderText="Health and Fitness" ReadOnly="True" SortExpression="Health and Fitness" />
<asp:BoundField DataField="Sports Mngt." HeaderText="Sports Mngt." ReadOnly="True" SortExpression="Sports Mngt." />
<asp:BoundField DataField="Badminton" HeaderText="Badminton" ReadOnly="True" SortExpression="Badminton" />
</Columns>
</asp:GridView>
【问题讨论】:
-
所以让我们说......在你的gridview中你有3行然后5列。除第 2 行和第 3 列外,所有行和列都有值。所以意思是你需要删除第 3 列,尽管 1,2,4,5 列具有价值?
-
@Unknownymous 我在上面举了一个例子:)
-
是的..我会更新我的答案...
-
@eirishainjel 当你有备用数据时会发生什么?像 1 行有空的,然后没有?
-
@eirishainjel 检查这个stackoverflow.com/a/17485746/2630817