C# GridView,子GridView,额外列赢得';你不会消失吗?
我正在构建一个GridView控件,它封装了一个子GridView。子gridview包含一个div标记,当用户在父gridview中选择一行时,该标记会显示出来。但是,即使内容是隐藏的,即div标记,也会添加一个额外的列-如何删除额外的列。在本教程中,它指出,通过添加一个C# GridView,子GridView,额外列赢得';你不会消失吗?,c#,.net,gridview,C#,.net,Gridview,我正在构建一个GridView控件,它封装了一个子GridView。子gridview包含一个div标记,当用户在父gridview中选择一行时,该标记会显示出来。但是,即使内容是隐藏的,即div标记,也会添加一个额外的列-如何删除额外的列。在本教程中,它指出,通过添加一个并开始一个新行,这应该会发生,但确实发生了(我还注意到作者关闭了网格线,所以我的假设是他实际上也有这个问题)。这是gridview,哦,我将itemtemplate的可见状态设置为'true',但是javascript无法找到
并开始一个新行
,这应该会发生,但确实发生了(我还注意到作者关闭了网格线,所以我的假设是他实际上也有这个问题)。这是gridview,哦,我将itemtemplate
的可见状态设置为'true'
,但是javascript无法找到它
(出于某种原因,它不喜欢我的
标记,因此它是复制和粘贴的)。看起来您的
中的标记不平衡:
<ItemTemplate >
</td></tr> <<---- These look unbalanced
<tr>
<td colspan="7">
<div id="<%# Eval("PublicationID") %>" style="display: none; position: relative">
<asp:GridView ID="GridView2_ABPubs" runat="server" AutoGenerateColumns="false" Width="100%"
Font-Names="Verdana" Font-Size="small">
<Columns>
<asp:BoundField DataField="NameAbbrev" HeaderText="Publication Name" SortExpression="NameAbbrev" />
</Columns>
</asp:GridView>
</div>
</td>
</tr>
</ItemTemplate>
我没有看到这些tr
,td
标签的开始标签:
...
<ItemTemplate >
</td></tr>
...
。。。
...
刚刚选中,文章作者在生成的页面源代码中似乎也有同样的问题。要去掉额外的列,只需将其css样式设置为display:none
。可以通过将CssClass应用于包含嵌套网格的TemplateField
来执行此操作:
<asp:TemplateField HeaderStyle-CssClass="hidden-column" ItemStyle-CssClass="hidden-column" FooterStyle-CssClass="hidden-column">
所有格式问题,链接已修复。(更新答案以消除双边框…)好的,我尝试了0高度行,但这让我大吃一惊。非常好的回答,谢谢。我唯一的一个小问题是,在模板字段和隐藏div所在的每行底部仍然有一个看起来像双边框的边框。有没有关于如何消除这种情况的建议,或者将其设置为1px更好?再次感谢。嗨,这不是诡辩,但在Opera中,它会在单击行并显示div后删除父级的上边框。如果再次隐藏,上边框将保持不可见,但如果刷新页面,上边框将显示。谢谢,R。我注意到的另一件事是,如果你点击其他没有子网格的行,会出现1px行。谢谢。我没有研究Opera中的问题,但是对于没有子数据的行,您应该使用GridView的EmptyDataText属性,让用户更清楚地看到没有数据存在。
<asp:TemplateField HeaderStyle-CssClass="hidden-column" ItemStyle-CssClass="hidden-column" FooterStyle-CssClass="hidden-column">
<style type="text/css">
.hidden-column {
display: none;
}
</style>
<tr id="<%# Eval("PublicationID") %>" style="display: none; position: relative">
<td colspan="7">
<div>
...
div.style.display = "table-row"; // not a div anymore!!