Parent node closes unexpectedly

10 posts, 0 answers
  1. Joe
    Joe avatar
    48 posts
    Member since:
    Dec 2007

    Posted 18 Aug 2008 Link to this post

    Hi,

    I'm having a problem with the RadGrid when using a multi-level hierarchy. Level 1 of the hierarchy is load mode client. Level 2 is load mode client. Level 3 is load mode server-on-demand. Here are the steps I'm following to reproduce the problem:

    • Open the window, all nodes are closed.
    • Open one of the level 1 nodes - the node expands as expected.
    • Open one of the level 2 nodes - the node expands as expected.
    • Open one of the level 3 nodes - the level 1 node collapses unexpectedly.
    • Reopen the level 1 node and observe that the level 3 node is expanded, as originally expected.

    I'm currently using Prometheus 2007.3. I was able to reproduce the problem using ASP.NET AJAX 2008.1 as well.

    Needless to say the users find it disconcerting, as they have to search through the level 1 nodes to find the one they were originally looking at.

    The problem does not occur if I set all levels to load mode client.

  2. Joe
    Joe avatar
    48 posts
    Member since:
    Dec 2007

    Posted 19 Aug 2008 Link to this post

    I also verified it's happening under 2008.2. Here is a sample that demonstrates the problem. Steps to reproduce:

    • Open the first node, id = 1. You will observe that there are two tables under this node. The top table is server on demand load, the bottom is client load.
    • Expand id 2 in the bottom table. The table expands as expected.
    • Attempt to expand id 2 in the top table. Observe that the instead of the id 2 node expanding, the id 1 node collapses.

    As I mentioned in my original email, the problem also occurs if the server on demand node is located at the next level below the 2 parent client load nodes.

    -- ASPX

     

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

     

    <%@ Register Assembly="Telerik.Web.UI, Version=2008.1.415.35, Culture=neutral, PublicKeyToken=121fae78165ba3d4"

        Namespace="Telerik.Web.UI" TagPrefix="radG" %>

     

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head runat="server">

        <title>Untitled Page</title>

    </head>

    <body>

        <form id="form1" runat="server">

            <radG:RadScriptManager ID="RadScriptManager1" runat="server">

            </radG:RadScriptManager>

            <div>

                <asp:Label ID="Label1" runat="server" Text="Features:"></asp:Label>

                <ul>

                    <li>Client loading of first hierarchy, server loading of second hierarchy</li>

                    <li>ObjectDataSources using DataTables</li>

                </ul>

                <radG:RadGrid runat="server" ID="radGrid" AllowPaging="True" AutoGenerateColumns="False"

                    DataSourceID="MasterObjectDataSource" GridLines="None">

                    <MasterTableView DataSourceID="MasterObjectDataSource" DataKeyNames="id"

                        HierarchyLoadMode="Client">

                        <Columns>

                            <radG:GridBoundColumn DataField="Id" DataType="System.Int32" HeaderText="Id" ReadOnly="True"

                                SortExpression="Id" UniqueName="Id">

                            </radG:GridBoundColumn>

                            <radG:GridBoundColumn DataField="Data" HeaderText="Data" ReadOnly="True" SortExpression="Data"

                                UniqueName="Data">

                            </radG:GridBoundColumn>

                        </Columns>

                        <DetailTables>

                            <radG:GridTableView DataSourceID="DetailsObjectDataSource" DataKeyNames="id" AutoGenerateColumns="True" runat="server"

                                HierarchyLoadMode="ServerOnDemand">

                                <ParentTableRelation>

                                    <radG:GridRelationFields DetailKeyField="masterId" MasterKeyField="id" />

                                </ParentTableRelation>

                                <DetailTables>

                                    <radG:GridTableView DataSourceID="SubDetailsObjectDataSource" DataKeyNames="id" AutoGenerateColumns="True" runat="server"

                                        AllowPaging="false">

                                        <ParentTableRelation>

                                            <radG:GridRelationFields DetailKeyField="detailsId" MasterKeyField="id" />

                                        </ParentTableRelation>

                                        <RowIndicatorColumn Visible="False">

                                            <HeaderStyle Width="20px" />

                                        </RowIndicatorColumn>

                                        <ExpandCollapseColumn Resizable="False" Visible="False">

                                            <HeaderStyle Width="20px" />

                                        </ExpandCollapseColumn>

                                        <EditFormSettings>

                                            <PopUpSettings ScrollBars="None" />

                                        </EditFormSettings>

                                    </radG:GridTableView>

                                </DetailTables>

                                <RowIndicatorColumn Visible="False">

                                    <HeaderStyle Width="20px" />

                                </RowIndicatorColumn>

                                <ExpandCollapseColumn Resizable="False">

                                    <HeaderStyle Width="20px" />

                                </ExpandCollapseColumn>

                                <EditFormSettings>

                                    <PopUpSettings ScrollBars="None" />

                                </EditFormSettings>

                            </radG:GridTableView>

                            <radG:GridTableView DataSourceID="DetailsObjectDataSource" DataKeyNames="id" AutoGenerateColumns="True" runat="server"

                                HierarchyLoadMode="Client">

                                <ParentTableRelation>

                                    <radG:GridRelationFields DetailKeyField="masterId" MasterKeyField="id" />

                                </ParentTableRelation>

                                <DetailTables>

                                    <radG:GridTableView DataSourceID="SubDetailsObjectDataSource" DataKeyNames="id" AutoGenerateColumns="True" runat="server"

                                        AllowPaging="false">

                                        <ParentTableRelation>

                                            <radG:GridRelationFields DetailKeyField="detailsId" MasterKeyField="id" />

                                        </ParentTableRelation>

                                        <RowIndicatorColumn Visible="False">

                                            <HeaderStyle Width="20px" />

                                        </RowIndicatorColumn>

                                        <ExpandCollapseColumn Resizable="False" Visible="False">

                                            <HeaderStyle Width="20px" />

                                        </ExpandCollapseColumn>

                                        <EditFormSettings>

                                            <PopUpSettings ScrollBars="None" />

                                        </EditFormSettings>

                                    </radG:GridTableView>

                                </DetailTables>

                                <RowIndicatorColumn Visible="False">

                                    <HeaderStyle Width="20px" />

                                </RowIndicatorColumn>

                                <ExpandCollapseColumn Resizable="False">

                                    <HeaderStyle Width="20px" />

                                </ExpandCollapseColumn>

                                <EditFormSettings>

                                    <PopUpSettings ScrollBars="None" />

                                </EditFormSettings>

                            </radG:GridTableView>

                        </DetailTables>

                        <RowIndicatorColumn Visible="False">

                            <HeaderStyle Width="20px" />

                        </RowIndicatorColumn>

                        <ExpandCollapseColumn Resizable="False">

                            <HeaderStyle Width="20px" />

                        </ExpandCollapseColumn>

                        <EditFormSettings>

                            <PopUpSettings ScrollBars="None" />

                        </EditFormSettings>

                    </MasterTableView>

                    <PagerStyle Mode="NextPrevAndNumeric"/>

                </radG:RadGrid>

                <asp:ObjectDataSource ID="MasterObjectDataSource" runat="server" SelectMethod="GetMasterObjects"

                    TypeName="DataGenerator2"></asp:ObjectDataSource>

                <asp:ObjectDataSource ID="DetailsObjectDataSource" runat="server" SelectMethod="GetDetailsObjectBy"

                    TypeName="DataGenerator2">

                    <SelectParameters>

                        <asp:Parameter Name="masterId" Type="Int32" />

                    </SelectParameters>

                </asp:ObjectDataSource>

                <asp:ObjectDataSource ID="SubDetailsObjectDataSource" runat="server" SelectMethod="GetSubDetailsObjectBy"

                    TypeName="DataGenerator2">

                    <SelectParameters>

                        <asp:Parameter Name="detailsId" Type="Int32" />

                    </SelectParameters>

                </asp:ObjectDataSource>

            </div>

        </form>

    </body>

    </html>

     

    -- C#

     

    using System.Collections.Generic;

    using System.Data;

     

    using MDS = MasterDataSet;

     

    /// <summary>

    /// Summary description for DataGenerator

    /// </summary>

    public static class DataGenerator2

    {

        private static MDS _dataSet;

     

        static DataGenerator2()

        {

            GenerateData();

        }

     

        private static void GenerateData()

        {

            MDS ds = new MDS();

            int nextId = 0;

            for (int i = 0; i < 50; i++)

            {

                int masterId = ++nextId;

                ds.MasterDataTable.AddMasterDataTableRow(masterId, string.Format("masterObject_{0}", masterId));

                for (int j = 0; j < 5; j++)

                {

                    int detailId = ++nextId;

                    MDS.DetailDataTableRow detailRow = ds.DetailDataTable.NewDetailDataTableRow();

                    detailRow.Id = detailId;

                    detailRow.MasterId = masterId;

                    detailRow.Data = string.Format("detailObject_{0}", detailId);

                    ds.DetailDataTable.AddDetailDataTableRow(detailRow);

     

                    for (int k = 0; k < 60; k++)

                    {

                        int subDetailId = ++nextId;

                        MDS.DetailDataTableRow subDetailRow = ds.DetailDataTable.NewDetailDataTableRow();

                        subDetailRow.Id = subDetailId;

                        subDetailRow.MasterId = detailId;

                        subDetailRow.Data = string.Format("subDetailObject_{0}", subDetailId);

                        ds.DetailDataTable.AddDetailDataTableRow(subDetailRow);

                    }

                }

            }

            _dataSet = ds;

        }

     

        public static MDS.MasterDataTableDataTable GetMasterObjects()

        {

            return _dataSet.MasterDataTable;

        }

     

        public static DataView GetDetailsObjectBy(int masterId)

        {

            return FilterDetails(masterId);

        }

     

        private static DataView FilterDetails(int masterId)

        {

            DataView dv = new DataView(_dataSet.DetailDataTable);

            dv.RowFilter = string.Format("MasterId = '{0}'", masterId);

            return dv;

        }

     

        public static DataView GetSubDetailsObjectBy(int detailsId)

        {

            return FilterDetails(detailsId);

        }

    }

     

    -- XSD

     

    <?xml version="1.0" encoding="utf-8"?>

    <xs:schema id="MasterDataSet" targetNamespace="http://tempuri.org/MasterDataSet.xsd" xmlns:mstns="http://tempuri.org/MasterDataSet.xsd" xmlns="http://tempuri.org/MasterDataSet.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">

      <xs:annotation>

        <xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">

          <DataSource DefaultConnectionIndex="0" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">

            <Connections>

            </Connections>

            <Tables>

            </Tables>

            <Sources>

            </Sources>

          </DataSource>

        </xs:appinfo>

      </xs:annotation>

      <xs:element name="MasterDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="MasterDataSet" msprop:Generator_DataSetName="MasterDataSet">

        <xs:complexType>

          <xs:choice minOccurs="0" maxOccurs="unbounded">

            <xs:element name="MasterDataTable" msprop:Generator_UserTableName="MasterDataTable" msprop:Generator_RowDeletedName="MasterDataTableRowDeleted" msprop:Generator_RowChangedName="MasterDataTableRowChanged" msprop:Generator_RowClassName="MasterDataTableRow" msprop:Generator_RowChangingName="MasterDataTableRowChanging" msprop:Generator_RowEvArgName="MasterDataTableRowChangeEvent" msprop:Generator_RowEvHandlerName="MasterDataTableRowChangeEventHandler" msprop:Generator_TableClassName="MasterDataTableDataTable" msprop:Generator_TableVarName="tableMasterDataTable" msprop:Generator_RowDeletingName="MasterDataTableRowDeleting" msprop:Generator_TablePropName="MasterDataTable">

              <xs:complexType>

                <xs:sequence>

                  <xs:element name="Id" msprop:Generator_UserColumnName="Id" msprop:Generator_ColumnPropNameInRow="Id" msprop:Generator_ColumnVarNameInTable="columnId" msprop:Generator_ColumnPropNameInTable="IdColumn" type="xs:int" minOccurs="0" />

                  <xs:element name="Data" msprop:Generator_UserColumnName="Data" msprop:Generator_ColumnPropNameInRow="Data" msprop:Generator_ColumnVarNameInTable="columnData" msprop:Generator_ColumnPropNameInTable="DataColumn" type="xs:string" minOccurs="0" />

                </xs:sequence>

              </xs:complexType>

            </xs:element>

            <xs:element name="DetailDataTable" msprop:Generator_UserTableName="DetailDataTable" msprop:Generator_RowDeletedName="DetailDataTableRowDeleted" msprop:Generator_RowChangedName="DetailDataTableRowChanged" msprop:Generator_RowClassName="DetailDataTableRow" msprop:Generator_RowChangingName="DetailDataTableRowChanging" msprop:Generator_RowEvArgName="DetailDataTableRowChangeEvent" msprop:Generator_RowEvHandlerName="DetailDataTableRowChangeEventHandler" msprop:Generator_TableClassName="DetailDataTableDataTable" msprop:Generator_TableVarName="tableDetailDataTable" msprop:Generator_RowDeletingName="DetailDataTableRowDeleting" msprop:Generator_TablePropName="DetailDataTable">

              <xs:complexType>

                <xs:sequence>

                  <xs:element name="Id" msprop:Generator_UserColumnName="Id" msprop:Generator_ColumnPropNameInRow="Id" msprop:Generator_ColumnVarNameInTable="columnId" msprop:Generator_ColumnPropNameInTable="IdColumn" type="xs:int" minOccurs="0" />

                  <xs:element name="MasterId" msprop:Generator_UserColumnName="MasterId" msprop:Generator_ColumnPropNameInRow="MasterId" msprop:Generator_ColumnVarNameInTable="columnMasterId" msprop:Generator_ColumnPropNameInTable="MasterIdColumn" type="xs:int" minOccurs="0" />

                  <xs:element name="Data" msprop:Generator_UserColumnName="Data" msprop:Generator_ColumnPropNameInRow="Data" msprop:Generator_ColumnVarNameInTable="columnData" msprop:Generator_ColumnPropNameInTable="DataColumn" type="xs:string" minOccurs="0" />

                </xs:sequence>

              </xs:complexType>

            </xs:element>

          </xs:choice>

        </xs:complexType>

      </xs:element>

      <xs:annotation>

        <xs:appinfo>

          <msdata:Relationship name="MasterDataTable_DetailDataTable" msdata:parent="MasterDataTable" msdata:child="DetailDataTable" msdata:parentkey="Id" msdata:childkey="MasterId" msprop:Generator_UserRelationName="MasterDataTable_DetailDataTable" msprop:Generator_RelationVarName="relationMasterDataTable_DetailDataTable" msprop:Generator_UserChildTable="DetailDataTable" msprop:Generator_UserParentTable="MasterDataTable" msprop:Generator_ParentPropName="MasterDataTableRow" msprop:Generator_ChildPropName="GetDetailDataTableRows" />

          <msdata:Relationship name="DetailDataTable_DetailDataTable" msdata:parent="DetailDataTable" msdata:child="DetailDataTable" msdata:parentkey="MasterId" msdata:childkey="Id" msprop:Generator_UserRelationName="DetailDataTable_DetailDataTable" msprop:Generator_RelationVarName="relationDetailDataTable_DetailDataTable" msprop:Generator_UserChildTable="DetailDataTable" msprop:Generator_UserParentTable="DetailDataTable" msprop:Generator_ParentPropName="DetailDataTableRowParent" msprop:Generator_ChildPropName="GetDetailDataTableRows" />

        </xs:appinfo>

      </xs:annotation>

    </xs:schema>

  3. UI for ASP.NET Ajax is Ready for VS 2017
  4. Joe
    Joe avatar
    48 posts
    Member since:
    Dec 2007

    Posted 20 Aug 2008 Link to this post

    Anybody home??
  5. Joe
    Joe avatar
    48 posts
    Member since:
    Dec 2007

    Posted 21 Aug 2008 Link to this post

    Anybody home yet??
  6. Leon
    Leon avatar
    373 posts
    Member since:
    Apr 2007

    Posted 21 Aug 2008 Link to this post

    Joe,

    I'm at home! ;)

    Do you get the problem using client mode along with the ServerBind? I remember I've seen a demo on the site demonstrating Mixed load mode:

    http://www.telerik.com/demos/aspnet/prometheus/Grid/Examples/Hierarchy/HierarchyLoadModeMixed/DefaultCS.aspx

    Hopefully this would be an acceptable work around for you.

    ~Leon
  7. Joe
    Joe avatar
    48 posts
    Member since:
    Dec 2007

    Posted 21 Aug 2008 Link to this post

    Hi Leon,

    Yes, I've already got the mixed mode binding working using that example. Actually, the example I posted is derived from that.

    I guess I'll just have to submit a ticket. I was trying to avoid that as it's easier for me to resolve problems in the forum, if possible.

    Thanks, Joe
  8. Leon
    Leon avatar
    373 posts
    Member since:
    Apr 2007

    Posted 21 Aug 2008 Link to this post

    Well, getting the solution in the forums is sometimes faster as I've seen some very active community members around, but using the support tickets you can send the exact runnable demo which replicates the problem. Make sure you submit the ticket with a demo including the necessary resources (I often use dummy data for the Grid since the problems are not related to exact data) getting faster resolution this way since they can debug my code. ;)

    Good luck!
    ~Leon
  9. Dimo
    Admin
    Dimo avatar
    8330 posts

    Posted 22 Aug 2008 Link to this post

    Hi Joe,

    The problem you are talking about is fixed now and changes will take effect in the coming Q2 2008 Service Pack 1.

    Best wishes,
    Dimo
    the Telerik team

    Check out Telerik Trainer, the state of the art learning tool for Telerik products.
  10. Joe
    Joe avatar
    48 posts
    Member since:
    Dec 2007

    Posted 02 Sep 2008 Link to this post

    FYI - After further testing it seems that the bug occurs in the 2008.2.723.35 version but not in the 2008.2.826.20 version.
  11. Joe
    Joe avatar
    48 posts
    Member since:
    Dec 2007

    Posted 09 Sep 2008 Link to this post

    FYI - It's also fixed in the 2008.2.826.35 version.
Back to Top
UI for ASP.NET Ajax is Ready for VS 2017