Pregunta

Estoy llenar una Telerik RadGrid con datos de un DataTable (System.Data.DataTable). Como estoy apoyando la aplicación de otra persona, no puedo usar cualquier otra fuente de datos de control o la pantalla.

En mi rejilla tengo tres columnas: digamos que son Reproductores Producido (columna A), Reproductores defectuosos (columna B) y Proporción faultiness (columna C). La consulta de base de datos proporciona estos para mí y hace el cálculo C = B / A.

Tengo una línea de totales (a GridFooterItem Telerik) en la parte inferior de la rejilla. En las columnas A y B Telerik calcula los totales de las columnas para mí. No podemos calcular el valor correcto para el 'total' de la columna C de la sola columna C:. Tenemos que rellenarla con (la suma de B) / (la suma de A)

Me las he arreglado para hacer esto mediante la manipulación del evento DataBound del RadGrid y llenar manualmente las células en el pie de página. (Tuve que coger el GridFooterItem en caso ItemCreated, a continuación, poner los valores en ella en caso DataBound, después de que se había calculado automáticamente los totales de A y B para mí.) Esto se siente bastante hacky - tal vez hay una mejor manera ... ?

De todos modos, la parte importante es la siguiente:

Mi rejilla se divide en grupos por lo que también es necesario para rellenar la columna C en los GridGroupFooterItems. No puedo conseguir mi técnica hacky para trabajar en este caso: Estoy encontrando la celda de pie que quiera con myGridFooterItem["WidgetsProduced"], pero no puedo lograr que las células del grupo de pie de página con myGridGroupFooterItem["WidgetsProduced"] - simplemente no es un diccionario

He intentado usar myGridGroupFooterItem.Cells[], pero esto TableCellCollection contiene un par más células de las que cabe esperar, por lo que accede a ellos por el índice de número entero se siente un poco chungo (especialmente ya que este es un informe definido por el usuario, por lo que las columnas pueden ser en cualquier orden).

Así que: ¿cómo lo pueblan estas células con mi cálculo

?
¿Fue útil?

Solución

su evento elemento de enlace de datos se ve 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
}


}

Otros consejos

Me doble comprobado si nombre único indexador trabaja con Q2 y Q3 2009 2009 versión de RadGrid para ASP.NET AJAX y funcionó en mi máquina. Para comprobar la versión y pedir más ayuda sobre cómo utilizar el foros Telerik si es necesario.

Dick

Probar

En la página Aspx:

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

(O)

En código detrás de la 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

Bueno, si usted usa fórmula personalizada para calcular los resultados en lugar de los agregados estándar como suma, promedio y así sucesivamente, es probable que tenga que confiar en su propia lógica. Las células de los pies de grupo deben ser indexable por nombre exclusivo - Recuerdo esto no fue apoyado con versiones anteriores Telerik ASP.NET parrilla, pero esto se añadió en versiones más recientes -. Q2 o Q3 2009

Dick

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top