Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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显示加号/减号,仅当子网格有数据时才展开_C#_Asp.net_Gridview - Fatal编程技术网

C# 嵌套的gridview显示加号/减号,仅当子网格有数据时才展开

C# 嵌套的gridview显示加号/减号,仅当子网格有数据时才展开,c#,asp.net,gridview,C#,Asp.net,Gridview,我使用这个经典脚本来显示加号/减号图标以扩展子网格。因为并不是我上下文中的所有行都有数据,所以我只想为那些在子网格中有数据的行显示加号/减号 这是我的剧本: <script type="text/javascript"> $("[src*=plus]").live("click", function () { $(this).closest("tr").after("<tr><td></td><td

我使用这个经典脚本来显示加号/减号图标以扩展子网格。因为并不是我上下文中的所有行都有数据,所以我只想为那些在子网格中有数据的行显示加号/减号

这是我的剧本:

 <script type="text/javascript">
        $("[src*=plus]").live("click", function () {
            $(this).closest("tr").after("<tr><td></td><td colspan = '999'>" + $(this).next().html() + "</td></tr>")
            $(this).attr("src", "images/minus.png");
        });
        $("[src*=minus]").live("click", function () {
            $(this).attr("src", "images/plus.png");
            $(this).closest("tr").next().remove();
        });
    </script>
更新 这是它的html方面:

<asp:GridView ID="zeroLevelGrid" runat="server" AutoGenerateColumns="false" CssClass="Grid"
            DataKeyNames="Code" OnRowDataBound="OnRowDataBoundZeroLevel">
            <Columns>
                <asp:BoundField ItemStyle-Width="35px" DataField="Id" HeaderText="Id" />
                <asp:BoundField ItemStyle-Width="50px" DataField="Code" HeaderText="Code" />
                <asp:BoundField ItemStyle-Width="150px" DataField="Description" HeaderText="Description" />
                <asp:BoundField ItemStyle-Width="50px" DataField="Quantity" HeaderText="Quantity" />
                <asp:TemplateField>
                    <ItemTemplate>
                        <img alt="" style="cursor: pointer" src="images/plus.png" />
                        <asp:Panel ID="firstLevelPanel" runat="server" Style="display: none">
                            <asp:GridView ID="firstLevelGrid" runat="server" AutoGenerateColumns="false" CssClass="ChildGrid" DataKeyNames="Code" OnRowDataBound="firstLevelGrid_OnRowDataBound">
                                <Columns>
                                    <asp:BoundField ItemStyle-Width="35px" DataField="Id" HeaderText="Id" />
                                    <asp:BoundField ItemStyle-Width="50px" DataField="Code" HeaderText="Code" />
                                    <asp:BoundField ItemStyle-Width="150px" DataField="Description" HeaderText="Description" />
                                    <asp:BoundField ItemStyle-Width="50px" DataField="Quantity" HeaderText="Quantity" />
                                    <asp:TemplateField>
                                        <ItemTemplate>
                                          ...................

...................

如何实现仅为具有子网格的行显示pus/减号?

您可以将其隐藏在绑定内部网格的位置。
使网格图像
runat=server
并在绑定内部gridview的位置检查查询中的行数(如果为零)隐藏它

 var dataSource=GetData(string.Format("thestring...", code));
 //check number of rows here using count
 var count=dataSource.Count();
 if(count>0)
 {
     firstLevelGrid.DataSource = GetData(string.Format("thestring...", code));
     firstLevelGrid.DataBind();
 }
 else
 {
    //find you image and hide it
     var element = e.Row.FindControl("imageid");
    //hide it

 }
编辑1 使图像
runat='server'

  <img alt="" style="cursor: pointer" src="images/plus.png" runat="server" id="img_expand" />

谢谢你,伙计。你提出的逻辑很清楚。但是我该如何隐藏它呢?找到你所在行的图像并将可见性设置为false。我已经发布了网格的html部分。非常感谢你的支持。
  <img alt="" style="cursor: pointer" src="images/plus.png" runat="server" id="img_expand" />
Image img=(Image)e.Row.FindControl("img_expand");
img.visisbility=fasle;