RadGrid with Grouping and Datatable

2 Answers 370 Views
Grid
Walter
Top achievements
Rank 1
Iron
Walter asked on 20 Jul 2021, 05:20 PM

Hi friends

I want to use a RadGrid with Grouping, as shown on this page:

https://demos.telerik.com/aspnet-ajax/grid/examples/functionality/grouping/grouping/defaultvb.aspx

But the data for this grid is inside a datatable.

Is there any way to build this grid without using SqlDataSource?

Thanks

See you

2 Answers, 1 is accepted

Sort by
0
Accepted
Attila Antal
Telerik team
answered on 23 Jul 2021, 12:58 PM

Hi Walter,

The Data Source you use to bind to RadGrid does not matter much in this scenario because the Grouping needs to be configured inside the Grid, not on the Data Source level. Just be sure to bind the Grid using the NeedDataSource event and never call the DataBind(). That tends to break it.

Create a Grid that you bind to a DataTable, and once data is bound, start defining the expressions, set the FieldName properties to reflect the Data Source (DataTable) columns:

<GroupByExpressions>
    <telerik:GridGroupByExpression>
        <SelectFields>
            <telerik:GridGroupByField FieldName="MyField1"></telerik:GridGroupByField>
        </SelectFields>
        <GroupByFields>
            <telerik:GridGroupByField FieldName="MyField1" SortOrder="Descending"></telerik:GridGroupByField>
        </GroupByFields>
    </telerik:GridGroupByExpression>
    <telerik:GridGroupByExpression>
        <SelectFields>
            <telerik:GridGroupByField FieldName="MyField2"></telerik:GridGroupByField>
        </SelectFields>
        <GroupByFields>
            <telerik:GridGroupByField FieldName="MyField2"></telerik:GridGroupByField>
        </GroupByFields>
    </telerik:GridGroupByExpression>
</GroupByExpressions>

 

Regards,
Attila Antal
Progress Telerik

Virtual Classroom, the free self-paced technical training that gets you up to speed with Telerik and Kendo UI products quickly just got a fresh new look + new and improved content including a brand new Blazor course! Check it out at https://learn.telerik.com/.

0
Walter
Top achievements
Rank 1
Iron
answered on 24 Aug 2021, 09:19 AM | edited on 25 Aug 2021, 10:30 AM

But I was able to load grid using datasource and databind

ASPX:

<telerik:RadGrid ID="gridCosteAdquisicion" runat="server" GridLines="Horizontal" AllowPaging="false"
    ShowFooter="false" AllowSorting="false" Skin="MyCustomSkin" EnableEmbeddedSkins="false" AutoGenerateColumns="false" 
    RenderMode="Lightweight" >

    <MasterTableView DataKeyNames="IdProducto" GroupLoadMode="Client" >

        <GroupByExpressions>
            <telerik:GridGroupByExpression>
                <SelectFields>
                    <telerik:GridGroupByField  FieldName="Naturaleza" HeaderText="&nbsp;" HeaderValueSeparator="&nbsp;"></telerik:GridGroupByField>
                </SelectFields>
                <GroupByFields>
                    <telerik:GridGroupByField FieldName="IdNaturaleza" HeaderText="&nbsp;" HeaderValueSeparator="&nbsp;"></telerik:GridGroupByField>
                </GroupByFields>
            </telerik:GridGroupByExpression>
            <telerik:GridGroupByExpression>
                <SelectFields>
                    <telerik:GridGroupByField FieldName="Categoria" HeaderText="&nbsp;" HeaderValueSeparator="&nbsp;"></telerik:GridGroupByField>
                </SelectFields>
                <GroupByFields>
                    <telerik:GridGroupByField FieldName="IdCategoria" HeaderText="&nbsp;" HeaderValueSeparator="&nbsp;"></telerik:GridGroupByField>
                </GroupByFields>
            </telerik:GridGroupByExpression>
        </GroupByExpressions>

        <Columns>
            <telerik:GridTemplateColumn DataField="" HeaderText="Productos" Display="true" 
                UniqueName="NombreCortoProducto" ItemStyle-HorizontalAlign="Left" HeaderStyle-HorizontalAlign="Left" HeaderStyle-Width="18%">
                <ItemTemplate>
                    <asp:LinkButton ID="lbproducto" runat="server" CommandName="VerFicha" CommandArgument='<%# Eval("CodigoExternoProducto")%>'>
                        <%# Eval("NombreCortoProducto")%>
                    </asp:LinkButton>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridBoundColumn DataField="Participaciones" HeaderText="NĀŗ Part. / Nominal" Display="true" 
                UniqueName="Participaciones" ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Right" HeaderStyle-Width="12%">
            </telerik:GridBoundColumn>
            <telerik:GridTemplateColumn DataField="" HeaderText="Coste Medio" Display="true" 
                UniqueName="CosteAdquisicion" ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Right" HeaderStyle-Width="9%">
                <ItemTemplate>
                    <%#FormatDecimal(Eval("CosteAdquisicion"), 2) & " " & Eval("DivisaAbreviatura")%>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridBoundColumn DataField="ImporteAdquisicion" HeaderText="Importe EUR" Display="true" 
                UniqueName="ImporteAdquisicion" DataFormatString="{0:###,##0.#0}" ItemStyle-HorizontalAlign="Right" 
                HeaderStyle-HorizontalAlign="Right" HeaderStyle-Width="11%">
            </telerik:GridBoundColumn>
            <telerik:GridTemplateColumn DataField="" HeaderText="Precio Unitario" Display="true" 
                UniqueName="ValorLiquidativo" ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Right" HeaderStyle-Width="9%">
                <ItemTemplate>
                    <%#FormatDecimal(Eval("ValorLiquidativo"), 2) & " " & Eval("DivisaAbreviatura")%>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridBoundColumn DataField="ImporteProducto" HeaderText="Importe EUR" Display="true" 
                UniqueName="ImporteProducto" DataFormatString="{0:###,##0.#0}" ItemStyle-HorizontalAlign="Right" 
                HeaderStyle-HorizontalAlign="Right" HeaderStyle-Width="11%">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Variacion" HeaderText="EUR" Display="true" 
                UniqueName="Variacion" DataFormatString="{0:###,##0.#0}" ItemStyle-HorizontalAlign="Right" 
                HeaderStyle-HorizontalAlign="Right" HeaderStyle-Width="10%">
            </telerik:GridBoundColumn>
            <telerik:GridBoundColumn DataField="Porcentaje" HeaderText="%" Display="true" 
                UniqueName="Porcentaje" ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Right" HeaderStyle-Width="6%">
            </telerik:GridBoundColumn>
            <telerik:GridTemplateColumn DataField="" HeaderText="Plazo" Display="true" 
                UniqueName="PlazoFormato" ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Right" HeaderStyle-Width="6%">
                <ItemTemplate>
                    <%#Eval("PlazoMedio") & " " & Eval("Formato")%>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
            <telerik:GridTemplateColumn DataField="" HeaderText="TAE" Display="true" UniqueName="TAE" 
                ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Right" HeaderStyle-Width="8%">
                <ItemTemplate>
                    <%#Eval("TAE")%>
                </ItemTemplate>
            </telerik:GridTemplateColumn>
        </Columns>
    </MasterTableView>

    <ClientSettings ReorderColumnsOnClient="false" AllowDragToGroup="false" AllowColumnsReorder="false" AllowGroupExpandCollapse="true" AllowExpandCollapse="true">
        <Selecting AllowRowSelect="true"></Selecting>
        <Resizing AllowRowResize="false" AllowColumnResize="false" EnableRealTimeResize="true" ResizeGridOnColumnResize="false"></Resizing>
    </ClientSettings>

    <GroupingSettings ShowUnGroupButton="true" RetainGroupFootersVisibility="false" ></GroupingSettings>
</telerik:RadGrid>

VB:

    Public Sub GetValoracion(ByVal persona As Persona, ByVal contrato As Contrato, ByVal fecha As Date)
        Dim fifo As Boolean = False
        Dim original As Boolean = False
        Dim rentabilidadAnual As Boolean = True
        Dim cantidad As Integer
        Dim TAEFlujos As New List(Of TrsTir.Flujo)
        Dim objSesion As New Session()

        Try
            objSesion = Session("objSession")
            objSesion.tipoSeleccion = CarteraSeleccionTipoEnum.Contrato

            panelExportar.Visible = True
            rdpFechaCoste.SelectedDate = objSesion.fechaFin

            If rdbFIFOCosteAquisicion.Checked Then
                fifo = True
            End If

            If rdbSuscripciónOriginalCosteAquisicion.Checked Then
                original = True
            End If

            'valoraciones = Datatable
            Dim valoraciones = GetValoracionByProductoCosteAdquisicionTIR(persona, contrato, fecha, CarteraOperativaTipoEnum.Interna, fifo, original, rentabilidadAnual, Me.TAEInterna, TAEFlujos)
            Session("TAEFlujos") = TAEFlujos
            cantidad = valoraciones.Rows.Count
            panelDatosTotal.Visible = False
            gridCosteAdquisicion.Visible = False

            If cantidad > 0 Then
                gridCosteAdquisicion.Visible = True
                gridCosteAdquisicion.DataSource = valoraciones
                gridCosteAdquisicion.DataBind()
            End If

            Session("objSession") = objSesion
            objSesion = Nothing
        Catch ex As Exception
            Throw New Exception(ex.Message)
        End Try
    End Sub

WEB:

See you

 

Tags
Grid
Asked by
Walter
Top achievements
Rank 1
Iron
Answers by
Attila Antal
Telerik team
Walter
Top achievements
Rank 1
Iron
Share this question
or