문제

나는 DataTable의 데이터로 Telerik Radgrid를 채우고 있습니다 (System.Data.DataTable). 다른 사람의 응용 프로그램을 지원할 때 다른 데이터 소스 나 디스플레이 컨트롤을 사용할 수 없습니다.

내 그리드에는 세 가지 열이 있습니다.이 열이 생성 된 위젯 (열 A), 결함이있는 위젯 (열 B) 및 결함 비율 (열 C)이라고 가정 해 봅시다. 데이터베이스 쿼리는 이들을 위해 제공하고 계산 c = b / A를 수행합니다.

나는 총 행이있다 (Telerik GridFooterItem) 그리드의 바닥에서. 열 A와 B에서 Telerik은 저를 위해 해당 열의 총계를 계산합니다. C 열 c 단독에서 C의 '총'에 대한 올바른 값을 계산할 수는 없습니다.

나는 이것을 처리함으로써 이것을했다 DataBound Radgrid의 사건과 바닥 글의 세포를 수동으로 채워줍니다. (나는 잡아야했다 GridFooterItem 에서 ItemCreated 이벤트 다음에 값을 넣으십시오 DataBound 이벤트는 A와 B의 총계를 자동으로 계산 한 후에 나에게 꽤 해킹 된 느낌이 듭니다. 아마도 더 좋은 방법이있을 것입니다 ...?

어쨌든 중요한 비트는 이것입니다.

내 그리드가 그룹으로 나뉘어 있으므로 열 C를 채우도록해야합니다. GridGroupFooterItem에스. 이 경우 해킹 기술을 작동시킬 수 없습니다. myGridFooterItem["WidgetsProduced"],하지만 나는 그룹 바닥 글 셀을 myGridGroupFooterItem["WidgetsProduced"] - 사전이 아닙니다.

사용해 보았습니다 myGridGroupFooterItem.Cells[], 하지만 이것은 TableCellCollection 내가 기대하는 것보다 몇 가지 셀이 포함되어 있으므로 정수 인덱스로 액세스하는 것은 약간의 로프가 느껴집니다 (특히 사용자 정의 보고서이므로 열이 순서대로있을 수 있습니다).

그래서 : 계산 으로이 셀을 어떻게 채우나요?

도움이 되었습니까?

해결책

항목 데이터 라운드 이벤트는 다음과 같습니다

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
}


}

다른 팁

ASP.NET AJAX 용 Radgrid의 2009 년 2 분기 및 2009 년 3 분기 버전에서 고유 한 이름 인덱서가 작동하는지 여부를 두 번 확인했습니다. 버전을 확인하고 더 많은 도움을 요청하십시오. Telerik 포럼 필요한 경우.

형사

이 시도

ASPX 페이지에서 :

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

(또는)

페이지 뒤에 코드 :

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

글쎄, 사용자 정의 공식을 사용하여 합, 평균 등과 같은 표준 집계 대신 결과를 계산하는 경우 자신의 논리에 의존해야 할 것입니다. 그룹 바닥 글의 셀은 고유 한 이름으로 색인화 할 수 있어야합니다. 이전 Telerik ASP.NET 그리드 버전에서는 지원되지 않았지만 최근 버전 인 Q2 또는 Q3 2009에서 추가되었습니다.

형사

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top