Bhagavan Raju M Ответов: 2

Проблема с вложенным gridview


<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
    <script type="text/javascript" language="javascript">

        function divexpandcollapse(divname) {
            var div = document.getElementById(divname);
            var img = document.getElementById('img' + divname);
            if (div.style.display == "none") {
                div.style.display = "inline";
                img.src = "../kjl_images/closed.gif";
            } else {
                div.style.display = "none";
                img.src = "../kjl_images/open.gif";
            }
        }
    </script>

</asp:Content>


<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <div>
        <asp:GridView ID="gvParentGrid" runat="server" DataKeyNames="hatchid" Width="300"

            AutoGenerateColumns="false" OnRowDataBound="gvUserInfo_RowDataBound" GridLines="None"

            BorderStyle="Solid" BorderWidth="1px" BorderColor="#df5015">
            <HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
            <RowStyle BackColor="#E1E1E1" />
            <AlternatingRowStyle BackColor="White" />
            <HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
            <Columns>
                <asp:TemplateField ItemStyle-Width="20px">
                    <ItemTemplate>
                        <a href="javascript:divexpandcollapse('div<%# Eval("hatchid") %>');">
                            <img id="imgdiv<%# Eval("hatchid") %>" width="9px" border="0" src="../kjl_images/closed.gif"  alt="" />
                        </a>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="hatchid" HeaderText="Hatch ID" HeaderStyle-HorizontalAlign="Left"></asp:BoundField>
                <asp:BoundField DataField="hatcheryname" HeaderText="Hatchery Name" HeaderStyle-HorizontalAlign="Left">
                </asp:BoundField>
                <asp:TemplateField>
                    <ItemTemplate>
                        <tr>
         <td colspan="100%">
     <div id="div<%# Eval("hatchid") %>" style="display: none; position: relative; left: 15px;overflow: auto">
    <asp:GridView ID="gvChildGrid" runat="server" AutoGenerateColumns="false" BorderStyle="Double"

  BorderColor="#df5015" GridLines="None" Width="250px">
    <HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
    <RowStyle BackColor="#E1E1E1" />     <AlternatingRowStyle BackColor="White" />
    <HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
      <Columns>   <asp:BoundField DataField="hatchid" HeaderText="Region" HeaderStyle-HorizontalAlign="Left">   </asp:BoundField>
     <asp:BoundField DataField="name" HeaderText="Name" HeaderStyle-HorizontalAlign="Left">  </asp:BoundField> </Columns>                                </asp:GridView>    </div>   </td>  </tr>                   </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView>
    </div>
</asp:Content>


protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            FillHatcheryGridDetails();
            
        }

    }

    public void FillHatcheryGridDetails()
    {
        DataTable dthatcherygrid = new DataTable();
        dthatcherygrid = objhatcheryBAL.GetChickGridsdet();
        gvParentGrid.DataSource = dthatcherygrid;
        gvParentGrid.DataBind();
    }

    protected void gvUserInfo_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            GridView GridView2 = (GridView)e.Row.FindControl("gvChildGrid");
            int hatchid = Convert.ToInt16(e.Row.Cells[1].Text);
            DataTable dtRegions = new DataTable();
            objhatcheryPL.hatchid = hatchid;
            dtRegions = objhatcheryBAL.GetHatchidDetaisl(objhatcheryPL);
            GridView2.DataSource = dtRegions;
            GridView2.DataBind();
        }
    }


Внутренний gridview не отображает никаких данных. Я пробовал и искал в google, но безрезультатно, результат тот же, я не получаю никаких ошибок.

thatraja

Во время отладки вы получаете данные в dtRegions?

Bhagavan Raju M

Я получаю данные, когда нажимаю на узел, который увеличивает размер, но показывает пустой

thatraja

какие столбцы присутствуют в dtRegions?

Bhagavan Raju M

@thatraja hatchid,имя

thatraja

Хорошо, просто удалите display: none; для всех строк & убедитесь, что все дочерние сетки загружаются?

Bhagavan Raju M

@thatraja Heart полностью благодарит свою работу.Я потратил уйму времени впустую .еще раз спасибо

thatraja

Ладно, закроем этот вопрос как решенный

Bhagavan Raju M

div.style.display = "inline" Я заменил на div.style.display = "block", это тоже работает. Могу я узнать где я ошибся

thatraja

Ответ уже есть в вашем сообщении. Всегда используйте 'block' вместо 'inline'.

2 Ответов

Рейтинг:
15

thatraja

Проблема заключается в ценности display собственность. inline строительство такой же промежуток. Так что используйте block ценность.

Прятать - display:none;
Показывать - display:block;

Кроме того, вы могли бы использовать visibility собственность.

К ВАШЕМУ СВЕДЕНИЮ,
Свойство отображения CSS[^]
Свойство видимости CSS[^]
Экране дисплея и видимость[^]


Рейтинг:
1

p_pratik

Пожалуйста, обратитесь к ссылке ниже, это будет полезно..

Складной вложенный GridView с использованием подкачки ASP.Net[^]


Richard MacCutchan

Я думаю, что через семь лет они уже решили эту проблему или сдались.