当我在我的一个DataGrid列中隐藏字段时,列的宽度似乎完全从网格中省略,导致我的所有其他列的大小调整被重新调整。现在,通过引导样式(CssClass =“table table-hover”;见下文)已经[响应]自动调整列的大小。没关系。什么不好是当我动态地(从代码隐藏)隐藏其中一个字段(Visible = false)时第二次调整列宽度 - 原因是,我有一个第二个DataGrid与下面的第一个相同,其中未触动的列width 必须匹配(我没有隐藏任何字段)。
<asp:datagrid id="dgS" AutoGenerateColumns="False" CssClass="table table-hover" ShowHeader="False" ShowFooter="False" runat="server" DataKeyField="SID" CellPadding="0" GridLines="None" AllowSorting="True" OnItemDataBound="dgS_ItemDataBound">
<HeaderStyle CssClass="" BackColor="steelblue" ForeColor="white" />
<Columns>
<asp:TemplateColumn HeaderText="SID" SortExpression="SID" HeaderStyle-CssClass=" " ItemStyle-CssClass=" ">
<ItemTemplate>
<asp:Label ID="lblSID" Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "SID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Grade" SortExpression="GradeChangeDescription" HeaderStyle-CssClass=" " ItemStyle-CssClass=" ">
<ItemTemplate>
<asp:dropdownlist id="ddlG" Runat="server"></asp:dropdownlist>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="C" Visible="False" HeaderStyle-CssClass="" ItemStyle-CssClass="">
<ItemTemplate>
<asp:Label id="lblC" Runat="server" text='<%# String.Format("{0:MM/dd/yyyy}", DataBinder.Eval(Container.DataItem, "C"))%>'></asp:Label>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:datagrid>
答案 0 :(得分:0)
不是一起隐藏/删除列并导致调整大小,而是可以使用不透明度隐藏其内容。例如:
.fakeHidden { opacity: 0;}