Pergunta

Eu estou preencher um RadGrid da Telerik com dados a partir de um DataTable (System.Data.DataTable).Como estou apoiando alguém do aplicativo, eu não posso usar qualquer outra fonte de dados ou de controle de exibição.

Na minha grade de eu ter três colunas:vamos dizer que eles são os Widgets Produzido (coluna A), erros de Widgets (coluna B) e Faultiness Proporção (coluna C).A consulta de banco de dados fornece esses para mim e faz o cálculo C = B / A.

Eu tenho uma linha de totais (um Telerik GridFooterItem) na parte inferior da grade.Nas colunas A e B Telerik calcula os totais para as colunas para mim.Não podemos calcular o valor correto para o "total" da coluna C da coluna C sozinho:temos que preenchê-lo com o (a soma de B) / (a soma de A).

Eu consegui fazer isso manipulando o DataBound evento do RadGrid e preencher manualmente as células no rodapé.(Eu tinha que pegar o GridFooterItem no ItemCreated evento, em seguida, colocar os valores no DataBound o evento, depois de ter calculado automaticamente os totais de A e B para mim.) Este se sente muito hacky - talvez haja uma forma melhor...?

De qualquer maneira, a parte importante é este:

Minha grade é dividida em grupos, então eu também preciso preencher a coluna C na GridGroupFooterItems.Eu não posso obter o meu hacky técnica para o trabalho, no caso:Eu estou achando o rodapé célula quero com myGridFooterItem["WidgetsProduced"], mas eu não posso obter o rodapé de grupo de células com myGridGroupFooterItem["WidgetsProduced"] - ele não é apenas um dicionário.

Tentei usar myGridGroupFooterItem.Cells[], mas isso TableCellCollection contém um par mais células do que eu esperava, para acessá-los por inteiro índice sente um pouco ropey (especialmente porque este é um utilizador definido pelo relatório, de modo que as colunas podem estar em qualquer ordem).

Assim:como faço para preencher essas células com meu cálculo?

Foi útil?

Solução

o item de ligação de dados de eventos é algo como

grd_ItemDataBound(object sender,GridItemEventArgs e)
{
//catch the footer element
if(e.Item.ItemType==GridItemType.GroupFooter)
{
    (e.Item.FindControl("yourTextBox") as TextBox).Text = your calculated value
}


}

Outras dicas

Eu duas vezes verificado se o nome exclusivo do indexador trabalha com 2ºt 2009 e o 3º trimestre de 2009 versão do RadGrid para ASP.NET AJAX e funcionou na minha máquina.Verifique a sua versão e pedir mais ajuda usando o Telerik fóruns se necessário.

Pau

Tente isso

Na página Aspx:

<telerik:GridBoundColumn Aggregate="Sum" DataField="Price" DataFormatString="{0:C}" EmptyDataText="0" FooterText="Total :" HeaderText="Price" UniqueName="Price"> ...

(Ou)

No Código-atrás de página:

Private Sub RadGrid1_ItemDataBound(ByVal sender As Object, ByVal e As Telerik.Web.UI.GridItemEventArgs) Handles RadGrid1.ItemDataBound       
    Dim Item As GridDataItem
    Dim value as Double
    Select Case (e.Item.ItemType)
    Case Telerik.Web.UI.GridItemType.AlternatingItem, Telerik.Web.UI.GridItemType.EditItem,Telerik.Web.UI.GridItemType.Item,Telerik.Web.UI.GridItemType.SelectedItem

        Item = e.Item
    '------ Calculate Total  amount -----------
        Item("TotalPayment").Text = CDbl(Item("TotalPayment").Text) 
        value += CDec(Item("TotalPayment").Text)

    Case Telerik.Web.UI.GridItemType.Footer
        '------ Display the total  amount in Footer ------
        Dim footerItem As GridFooterItem = e.Item
        If Not RadGrid1.Items.Count = 0 Then footerItem("TotalPayment").Text = "Total :" + value
    End Select
End Sub

Bem, se você usar a fórmula personalizada para calcular os resultados em vez de padrão de agregados, como soma, média, e assim por diante, você provavelmente terá que confiar em sua própria lógica.As células do grupo rodapés devem ser indexadas pelo nome exclusivo - lembro-me isto não era suportada com o anterior Telerik ASP.NET Grelha de versões, mas esta foi adicionado em versões mais recentes - Q2 ou Q3 2009.

Pau

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top