This is a migrated thread and some comments may be shown as answers.

NestedView not open with first click

1 Answer 135 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Servando
Top achievements
Rank 1
Servando asked on 14 Sep 2011, 12:37 PM
I have used the NestedView several times but this is the first time I see this error.
I have a RadChar and a RadGrid in the nested and when I click on any row at first time, then the nested doesn't open, but after, I can open all nested.
  • I tried  change de databind of radchart on OnItemCommand and but not work
  • If  I remove de ajax it works prefectly
  • The subRadGrid created in the nested work, and do databind in the OnItemDataBound correctly
Why I lost first click?

ASPX
<telerik:RadGrid ID="RadGridInfoRecharges"
            OnItemCommand="RadGridInfoRecharges_ItemCommand"
            OnItemDataBound="RadGrid1_ItemDataBound"
            Skin="Default"
            runat="server"
            AutoGenerateColumns="False"
            AllowPaging="True"
            GridLines="Horizontal"
            CssClass="groupBox">
        <ExportSettings ExportOnlyData="false" FileName="Recharges" 
            IgnorePaging="true" OpenInNewWindow="True">
            <Csv ColumnDelimiter="Semicolon" />
        </ExportSettings>
            <MasterTableView DataSourceID="ObjectDataSourceGetRecharges" PageSize="50" DataKeyNames="OwnerId">
                <NestedViewTemplate>
                        <asp:Panel ID="NestedViewPanel" CssClass="InfoRechargesDetails" runat="server" >
                            <telerik:RadGrid ID="RadGridInfoRechargesNested"
                                    Skin="Default"
                                    runat="server"
                                    AutoGenerateColumns="False"
                                    AllowPaging="False"
                                    GridLines="Horizontal">
                                <MasterTableView>
                                    <Columns>
                                        <telerik:GridBoundColumn HeaderText="Credit"  DataFormatString="{0:N0}" DataField="Credit" UniqueName="Credit"></telerik:GridBoundColumn>
                                    </Columns>
                                </MasterTableView>
                            </telerik:RadGrid>
                            <telerik:RadChart ID="rcRechargesStatisticsRecharges" Width="900" Height="300" runat="server"
                            DefaultType="Line" Legend-Appearance-Visible="false" 
                            Legend-Visible="false" BorderWidth="0">
                            </telerik:RadChart>
                        </asp:Panel>
                </NestedViewTemplate>
                <ExpandCollapseColumn Visible="True"></ExpandCollapseColumn>
                <Columns>
                    <telerik:GridBoundColumn HeaderText="OwnerId"  ItemStyle-HorizontalAlign="Right" DataField="OwnerId" UniqueName="OwnerId"></telerik:GridBoundColumn>
                </Columns>
            </MasterTableView>
    </telerik:RadGrid>


CS ItemDataBound
protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
       {
           if (e.Item is GridNestedViewItem)
           {
               int OwnerId = ((RechargeItemByContract)e.Item.DataItem).OwnerId;
               RadChart rcRechargesStatisticsRecharges = (RadChart)e.Item.FindControl("rcRechargesStatisticsRecharges");
               RadChart rcRechargesStatisticsPrices = (RadChart)e.Item.FindControl("rcRechargesStatisticsPrices");
 
               // DATA
               List<RechargeItemLite> Data = RechargesBLL.GetRechargeItemLite(OwnerId);
 
               if (Data.Count > 1)
               {
                   rcRechargesStatisticsRecharges.PlotArea.XAxis.Appearance.ValueFormat = Telerik.Charting.Styles.ChartValueFormat.ShortDate;
                   rcRechargesStatisticsRecharges.PlotArea.XAxis.Appearance.LabelAppearance.RotationAngle = 45;
                   rcRechargesStatisticsRecharges.PlotArea.XAxis.AutoScale = false;
                   rcRechargesStatisticsRecharges.PlotArea.XAxis.IsZeroBased = false;
                   rcRechargesStatisticsRecharges.Legend.Visible = false;
                   rcRechargesStatisticsRecharges.ChartTitle.TextBlock.Text = "Creditos por recarga";
                   rcRechargesStatisticsRecharges.DataSource = Data;
                   double steps = (Data[0].OADate - Data[Data.Count - 1].OADate) / Data.Count;
                   rcRechargesStatisticsRecharges.PlotArea.XAxis.AddRange(Data[Data.Count - 1].OADate, Data[0].OADate, steps);
                   rcRechargesStatisticsRecharges.DataBind();
 
                   rcRechargesStatisticsRecharges.Series[0].DataXColumn = "OADate";
                   rcRechargesStatisticsRecharges.Series[1].Visible = false;
                   rcRechargesStatisticsRecharges.Series[2].Visible = false;
 
                   rcRechargesStatisticsRecharges.Visible = true;
               }
               else
                   rcRechargesStatisticsRecharges.Visible = false;

Or try
CS ItemComman
        protected void RadGridInfoRecharges_ItemCommand(object source, GridCommandEventArgs e)
        {
            // cazar el evento del expand/collapse
            if (e.CommandName == RadGrid.ExpandCollapseCommandName)
            {
                // Si el nestview no esta expandido significa que ahora es se expandera
                if (!e.Item.Expanded)
                {
                    #region declaraciones controles
                    RadGrid RadGridInfoRechargesNested = (RadGrid)((GridDataItem)e.Item).ChildItem.FindControl("RadGridInfoRechargesNested");
                    RadChart rcRechargesStatisticsRecharges = (RadChart)((GridDataItem)e.Item).ChildItem.FindControl("rcRechargesStatisticsRecharges");
                    RadChart rcRechargesStatisticsPrices = (RadChart)((GridDataItem)e.Item).ChildItem.FindControl("rcRechargesStatisticsPrices");
                    #endregion
                    // Extraemos la información de DataKeyValue desde la grid principal
                    int OwnerId = (int)((GridDataItem)e.Item).GetDataKeyValue("OwnerId");
 
                    // DATA
                    List<RechargeItemLite> Data = RechargesBLL.GetRechargeItemLite(OwnerId);
 
                    RadGridInfoRechargesNested.DataSource = Data;
                    RadGridInfoRechargesNested.DataBind();
 
                    if (Data.Count > 1)
                    {
                        rcRechargesStatisticsRecharges.PlotArea.XAxis.Appearance.ValueFormat = Telerik.Charting.Styles.ChartValueFormat.ShortDate;
                        rcRechargesStatisticsRecharges.PlotArea.XAxis.Appearance.LabelAppearance.RotationAngle = 45;
                        rcRechargesStatisticsRecharges.PlotArea.XAxis.AutoScale = false;
                        rcRechargesStatisticsRecharges.PlotArea.XAxis.IsZeroBased = false;
                        rcRechargesStatisticsRecharges.Legend.Visible = false;
                        rcRechargesStatisticsRecharges.ChartTitle.TextBlock.Text = "Creditos por recarga";
                        rcRechargesStatisticsRecharges.DataSource = Data;
                        double steps = (Data[0].OADate - Data[Data.Count - 1].OADate) / Data.Count;
                        rcRechargesStatisticsRecharges.PlotArea.XAxis.AddRange(Data[Data.Count - 1].OADate, Data[0].OADate, steps);
                        rcRechargesStatisticsRecharges.DataBind();
 
                        rcRechargesStatisticsRecharges.Series[0].DataXColumn = "OADate";
                        rcRechargesStatisticsRecharges.Series[1].Visible = false;
                        rcRechargesStatisticsRecharges.Series[2].Visible = false;
 
                        rcRechargesStatisticsRecharges.Visible = true;
                    }
                    else
                        rcRechargesStatisticsRecharges.Visible = false;

1 Answer, 1 is accepted

Sort by
0
Pavlina
Telerik team
answered on 17 Sep 2011, 01:44 PM
Hi Servando,

Can you please elaborate how you bind the outer grid? Please keep in mind that hierarchy grid structure is not supported with simple databinding calling DataBind() method. RadGrid requires advanced data-binding through its NeedDataSource event.

Also, could you please provide a live url that reproduces the problem, so we can investigate it further?

Regards,
Pavlina
the Telerik team
Browse the vast support resources we have to jump start your development with RadControls for ASP.NET AJAX. See how to integrate our AJAX controls seamlessly in SharePoint 2007/2010 visiting our common SharePoint portal
Tags
Grid
Asked by
Servando
Top achievements
Rank 1
Answers by
Pavlina
Telerik team
Share this question
or