Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# GridView,子GridView,额外列赢得';你不会消失吗?_C#_.net_Gridview - Fatal编程技术网

C# GridView,子GridView,额外列赢得';你不会消失吗?

C# GridView,子GridView,额外列赢得';你不会消失吗?,c#,.net,gridview,C#,.net,Gridview,我正在构建一个GridView控件,它封装了一个子GridView。子gridview包含一个div标记,当用户在父gridview中选择一行时,该标记会显示出来。但是,即使内容是隐藏的,即div标记,也会添加一个额外的列-如何删除额外的列。在本教程中,它指出,通过添加一个并开始一个新行,这应该会发生,但确实发生了(我还注意到作者关闭了网格线,所以我的假设是他实际上也有这个问题)。这是gridview,哦,我将itemtemplate的可见状态设置为'true',但是javascript无法找到

我正在构建一个GridView控件,它封装了一个子GridView。子gridview包含一个div标记,当用户在父gridview中选择一行时,该标记会显示出来。但是,即使内容是隐藏的,即div标记,也会添加一个额外的列-如何删除额外的列。在本教程中,它指出,通过添加一个
并开始一个新行
,这应该会发生,但确实发生了(我还注意到作者关闭了网格线,所以我的假设是他实际上也有这个问题)。这是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!!