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

[Solved] server-side hierarchy load - problems expanding items (complete)

3 Answers 217 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Veronica
Top achievements
Rank 1
Veronica asked on 24 Feb 2009, 06:32 PM
Hi, I have a radgrid in witch I show relations between two items, when I click the expand button it has to show the information of those items. The radgrid have two levels, but it doesn't expand when I click the expand button. Here is the asp code:

    <radg:radgrid id="Relaciones" style="Z-INDEX: -111; LEFT: 8px; POSITION: absolute; TOP: 432px" runat="server" Height="96px" Width="940px" AllowPaging="True" VirtualItemCount="2" cssclass="RadGrid" GroupingEnabled="False" EnableAsyncRequests="True" HorizontalAlign="Center" GridLines="Vertical" AllowSorting="True" AllowFilteringByColumn="True">  
    <MasterTableView HierarchyLoadMode="ServerBind" HierarchyDefaultExpanded="False" AutoGenerateColumns="False" CssClass="MasterTable" AllowFilteringByColumn="True" GridLines="Vertical" HorizontalAlign="Center">  
        <DetailTables>  
             <radg:GridTableView DataKeyNames="id_relacion" AutoGenerateColumns="False" AllowSorting="False" DataMember="ItemsDetails" PageSize="1" AllowFilteringByColumn="False" GridLines="Vertical" HorizontalAlign="Center">  
            <ParentTableRelation>  
                <radg:GridRelationFields DetailKeyField="id_relacion" MasterKeyField="id_relacion"></radg:GridRelationFields>  
            </ParentTableRelation>  
            <Columns>  
                 <radg:GridBoundColumn HeaderText="Fecha Origen" ShowSortIcon="False" DataField="Fecha_Origen" ReadOnly="True"  AllowSorting="False" AllowFiltering="False" UniqueName="Fecha_Origen" Reorderable="False"></radg:GridBoundColumn>  
                 <radg:GridBoundColumn HeaderText="Monto Original" DataType="System.Double" ShowSortIcon="False" DataField="Monto_Original" ReadOnly="True" AllowSorting="False" AllowFiltering="False" UniqueName="Monto_Original" Reorderable="False"></radg:GridBoundColumn>  
                 <radg:GridBoundColumn HeaderText="Monto Vto." DataType="System.Double" ShowSortIcon="False" DataField="Monto_Venci" ReadOnly="True" AllowSorting="False" AllowFiltering="False" UniqueName="Monto_Venci" Reorderable="False"></radg:GridBoundColumn>  
                 <radg:GridBoundColumn HeaderText="Origen" ShowSortIcon="False" DataField="Origen_Nombre" ReadOnly="True"   AllowSorting="False" AllowFiltering="False" UniqueName="Origen_Nombre" Reorderable="False"></radg:GridBoundColumn>  
                 <radg:GridBoundColumn HeaderText="Categoria" ShowSortIcon="False" DataField="Cat_Nombre" ReadOnly="True"       AllowSorting="False" AllowFiltering="False" UniqueName="Cat_Nombre" Reorderable="False"></radg:GridBoundColumn>  
                 <radg:GridBoundColumn HeaderText="Fecha Origen" ShowSortIcon="False" DataField="Fecha_Origen_Prov" ReadOnly="True" AllowSorting="False" AllowFiltering="False" UniqueName="Fecha_Origen_Prov" Reorderable="False"></radg:GridBoundColumn>  
                 <radg:GridBoundColumn HeaderText="Monto Original" ShowSortIcon="False" DataField="Monto_Original_Prov" ReadOnly="True" AllowSorting="False" AllowFiltering="False" UniqueName="Monto_Original_Prov" Reorderable="False"></radg:GridBoundColumn>  
                 <radg:GridBoundColumn HeaderText="Monto Vto." ShowSortIcon="False" DataField="Monto_Venci_Prov" ReadOnly="True"    AllowSorting="False" AllowFiltering="False" UniqueName="Monto_Venci_prov" Reorderable="False"></radg:GridBoundColumn>  
                 <radg:GridBoundColumn HeaderText="Monto Periodico" ShowSortIcon="False" DataField="Monto_Periodico_Prov" ReadOnly="True" AllowSorting="False" AllowFiltering="False" UniqueName="Monto_Periodico_Prov" Reorderable="False"></radg:GridBoundColumn>  
                 <radg:GridBoundColumn HeaderText="Origen" ShowSortIcon="False" DataField="Origen_Nombre_Prov" ReadOnly="True" AllowSorting="False" AllowFiltering="False" UniqueName="Origen_Nombre_Prov" Reorderable="False"></radg:GridBoundColumn>  
                 <radg:GridBoundColumn HeaderText="Categoria" ShowSortIcon="False" DataField="Cat_Nombre_Prov" ReadOnly="True"  AllowSorting="False" AllowFiltering="False" UniqueName="Cat_Nombre_Prov" Reorderable="False"></radg:GridBoundColumn>  
            </Columns>  
            <PagerStyle Visible="False"></PagerStyle>  
            <ItemStyle BackColor="#FCEDB0"></ItemStyle>  
            <HeaderStyle ForeColor="Blue" BackColor="#003366"></HeaderStyle>  
            <AlternatingItemStyle BackColor="#D5B96A"></AlternatingItemStyle>  
        </radg:GridTableView>  
    </DetailTables>  
    <Columns>  
         <radg:GridBoundColumn Visible="False" DataField="id_relacion" AllowFiltering="False" UniqueName="id_relacion"></radg:GridBoundColumn>  
         <radg:GridBoundColumn HeaderText="Fecha Estado" DataField="Fecha" UniqueName="Fecha"></radg:GridBoundColumn>  
         <radg:GridBoundColumn HeaderText="Tipo Estado" DataField="descripcion" UniqueName="descripcion"></radg:GridBoundColumn>  
         <radg:GridBoundColumn HeaderText="Monto Estimado" DataType="System.Double" DataField="Monto_Estimado" UniqueName="Estimado_Provisorio_SSRP"></radg:GridBoundColumn>  
         <radg:GridBoundColumn HeaderText="Monto Definitivo" DataType="System.Double" DataField="Monto_Definitivo" UniqueName="Monto_Definitivo"></radg:GridBoundColumn>  
    </Columns>  
    <ExpandCollapseColumn ButtonType="ImageButton" UniqueName="ExpandColumn">  
        <HeaderStyle Width="19px"></HeaderStyle>  
    </ExpandCollapseColumn>  
</MasterTableView>  
<AlternatingItemStyle HorizontalAlign="Center" Height="24px" CssClass="GridAltRow" VerticalAlign="Middle"></AlternatingItemStyle>  
<FooterStyle HorizontalAlign="Center"></FooterStyle>  
<FilterMenu NotSelectedImageUrl="~/RadControls/Grid/Skins/Default/NotSelectedMenu.gif" HoverBackColor="LightSteelBlue" HoverBorderColor="Navy" SelectColumnBackColor="Control" EnableViewState="False" SelectedImageUrl="~/RadControls/Grid/Skins/Default/SelectedMenu.gif" TextColumnBackColor="Window"></FilterMenu>  
<SelectedItemStyle HorizontalAlign="Center"></SelectedItemStyle>  
<ClientSettings ReorderColumnsOnClient="True" AllowColumnsReorder="True" AllowExpandCollapse="True">  
    <Selecting AllowRowSelect="True"></Selecting>  
    <Scrolling ScrollHeight="" AllowScroll="True" EnableAJAXScrollPaging="True"></Scrolling>  
</ClientSettings>  
<HeaderStyle HorizontalAlign="Center" CssClass="GridHeader" BackColor="#003366"></HeaderStyle>  
<PagerStyle BackColor="#003366" CssClass="GridPager" Mode="NextPrevAndNumeric"></PagerStyle>  
<ItemStyle HorizontalAlign="Center" Height="24px" CssClass="GridRow"></ItemStyle>  
</radg:radgrid>  
 

In the code-behind I have:

    Private Sub Page_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load  
        'Introducir aquí el código de usuario para inicializar la página  
        If Not Page.IsPostBack Then  
            cargarGrillaRelaciones()  
        End If  
    End Sub  
  
    Private Sub cargarGrillaRelaciones()  
        Dim dao As New DAO_Clase.DAO_Clase  
        Dim ds As DataSet  
  
        ds = dao.ItemsRelaciones()  
        If (Not ds.HasErrors) Then  
            Me.Relaciones.DataSource = ds  
            Me.Relaciones.DataBind()  
        End If  
  
    End Sub  
  
    Private Sub Relaciones_DetailTableDataBind(ByVal source As ObjectByVal e As Telerik.WebControls.GridDetailTableDataBindEventArgs) Handles Relaciones.DetailTableDataBind  
        Dim parentItem As GridDataItem = CType(e.DetailTableView.ParentItem, GridDataItem)  
        If parentItem.Edit Then  
            Return  
        End If  
  
        If (e.DetailTableView.DataMember = "ItemsDetails"Then  
            Dim id_rela As Integer = CType(parentItem("id_relacion").Text, Integer)  
            Dim dao As New DAO_Clase.DAO_Clase  
            Dim ds As DataSet = dao.ItemsDeRelacion(id_rela)  
            e.DetailTableView.DataSource = ds  
              
        End If  
    End Sub  
 

RadGrid version 3.0.2.0

I don't know what I'm doing wrong.

Thanks.
Veronica



3 Answers, 1 is accepted

Sort by
0
Princy
Top achievements
Rank 2
answered on 26 Feb 2009, 10:37 AM
Hi,

Try using the Advanced Data Binding technique(NeedDataSource ) to populate grid . This might help solve your issues

http://demos.telerik.com/aspnet-ajax/grid/examples/programming/detailtabledatabind/defaultcs.aspx

Thanks,
Princy


0
Veronica
Top achievements
Rank 1
answered on 03 Apr 2009, 05:11 PM
Hi, I'm sorry for the delay, but I had some other problems that I had to solve before this one.
I looked at that page you suggest me and I modified my code using the example, it's look like this:

Public Sub Relaciones_DetailTableDataBind(ByVal source As ObjectByVal e As Telerik.WebControls.GridDetailTableDataBindEventArgs) Handles Relaciones.DetailTableDataBind 
        Dim parentItem As GridDataItem = CType(e.DetailTableView.ParentItem, GridDataItem) 
 
        If parentItem.Edit Then 
            Return 
        End If 
 
        If (e.DetailTableView.DataMember = "ItemsDetails"Then 
            Dim id_rela As Integer = CType(parentItem.GetDataKeyValue("id_relacion"), Integer
            Dim dao As New DAO_Clase.DAO_Clase 
            Dim ds As DataSet = dao.ItemsDeRelacion(id_rela) 
            e.DetailTableView.DataSource = ds 
            parentItem.Expanded = True 
        End If 
    End Sub 
 
    Public Sub Relaciones_NeedDataSource(ByVal source As ObjectByVal e As Telerik.WebControls.GridNeedDataSourceEventArgs) Handles Relaciones.NeedDataSource 
 
        If Not e.IsFromDetailTable Then 
            Dim dao As New DAO_Clase.DAO_Clase 
            Dim ds As DataSet = dao.ItemsRelaciones() 
            Relaciones.DataSource = ds 
        End If 
 
    End Sub 
End Class 

But still not showing the detail table.

In the help of the rad grid I'm using, the code that I should use is one of the tree below:

Binding r.a.d.grid DetailTable using database select

Private Sub RadGrid1_DetailTableDataBind(ByVal source As ObjectByVal e As GridDetailTableDataBindEventArgs) 
     Dim parentItem As GridDataItem = CType(e.DetailTableView.ParentItem,GridDataItem) 
     If parentItem.Edit Then 
           Return 
     End If 
 
     If (e.DetailTableView.DataMember = "OrderDetails"Then 
         Me.dsNWind1.OrderDetails.Clear 
         Me.daOrderDetails.SelectCommand.CommandText = ("Select * from [Order Details] where OrderID = " + item1.Item("OrderID").Text) 
         Me.daOrderDetails.Fill( Me.dsNWind1.OrderDetails) 
     End If 
End Sub 
 

Binding r.a.d.grid DetailTable using DataTable.Select

Private Sub RadGrid1_DetailTableDataBind(ByVal source As ObjectByVal e As GridDetailTableDataBindEventArgs) 
     Dim parentItem As GridDataItem = CType(e.DetailTableView.ParentItem,GridDataItem) 
     If parentItem.Edit Then 
           Return 
     End If 
 
     If (e.DetailTableView.DataMember = "OrderDetails"Then 
            Dim ds As DataSet = CType(e.DetailTableView.DataSource, DataSet) 
           e.DetailTableView.DataSource = ds.Tables("OrderDetails").Select"CustomerID = '" + parentItem("CustomerID") .Text + "'" ) 
     End If 
End Sub 
 

Binding r.a.d.grid DetailTable using filtered DataView

Private Sub RadGrid1_DetailTableDataBind(ByVal source As ObjectByVal e As GridDetailTableDataBindEventArgs) 
     Dim parentItem As GridDataItem = CType(e.DetailTableView.ParentItem,GridDataItem) 
     If parentItem.Edit Then 
           Return 
     End If 
 
     If (e.DetailTableView.DataMember = "OrderDetails"Then 
            Dim ds As DataSet = CType(e.DetailTableView.DataSource, DataSet) 
            Dim dv As DataView = ds.Tables("OrderDetails").DefaultView 
           dv.RowFilter = "CustomerID = '" + parentItem("CustomerID").Text + "'" 
           e.DetailTableView.DataSource = dv 
     End If 
End Sub 
 

The best option I think is the first but I don't know what objects are:
 Me.dsNWind1.OrderDetails
and
Me.daOrderDetails



because it doesn't have an aspx code to look at.

Thanks.
Veronica





0
Veronica
Top achievements
Rank 1
answered on 08 Apr 2009, 06:30 PM
I forgot to tell you that when the page is called, both of the procedures are executed, like it should, and when I click in the expand button it calls the DetailTableDataBind procedure and the button changes to expanded, the table stays the same, it doesn't bind to the datasource.
The radgrid version is 3.0.2.0 so it doesn't support a few thing in the example that you gave me.

Thanks
Verónica
Tags
Grid
Asked by
Veronica
Top achievements
Rank 1
Answers by
Princy
Top achievements
Rank 2
Veronica
Top achievements
Rank 1
Share this question
or