티스토리 뷰

    // Footer 만들기 위해 컬럼 배열로...
    private void Footer(UltraWebGrid grid, DataTable datatable, string columns, string titleColumn)
    {
        GridFooterTotal(grid, datatable, columns.Split(','), titleColumn);  // 배열로 만든 컬럼으로 Total 함수 호출
    }

    // 최종 Footer 생성 (footer 계산)
    private void GridFooterTotal(UltraWebGrid grid, DataTable datatable, string[] columns, string titleColumn)
    {
        grid.DisplayLayout.ColFootersVisibleDefault = ShowMarginInfo.Yes;
        grid.DisplayLayout.StationaryMargins = StationaryMargins.HeaderAndFooter;
        foreach (string columnName in columns)
        {
            UltraGridColumn column = grid.Columns.FromKey(columnName.Trim());
            column.Footer.Style.HorizontalAlign = HorizontalAlign.Right;
            column.Footer.Style.Padding.Right = 2;

            if (columnName == "rate")
            {

                string totalpqty = grid.Columns.FromKey("pqty").Footer.Caption.Replace(",", "");
                string totalrqty = grid.Columns.FromKey("rqty").Footer.Caption.Replace(",", "");
                decimal rate = (NullCheck(totalrqty) / NullCheck(totalpqty)) * 100;
                column.Footer.Caption = rate.ToString("###,###,###,###.##");

            }

            else if (columnName == "monrate")
            {

                string totalpamt = grid.Columns.FromKey("pamt").Footer.Caption.Replace(",", "");
                string totalramt = grid.Columns.FromKey("ramt").Footer.Caption.Replace(",", "");
                decimal monrate = (NullCheck(totalpamt) / NullCheck(totalramt)) * 100;
                column.Footer.Caption = monrate.ToString("###,###,###,###.##");
               
            }

            else
            {
                column.Footer.Caption = datatable.AsEnumerable().Sum(r => NullCheck(r[columnName.Trim()])).ToString("###,###,###,###.##");
            }
        }

        if (string.IsNullOrEmpty(titleColumn))
        {
            grid.Columns[0].Footer.Caption = CM.TotalText;
        }
        else
        {
            grid.Columns[0].Footer.Caption = "";
            grid.Columns.FromKey(titleColumn).Footer.Caption = CM.TotalText;
        }
    }

    // null 체크  (decimal로 변경시 공백으로 들어갈 경우 convert가 되지 않으며 error가 나므로 0으로 변경한다.)
    public static decimal NullCheck(object d)
    {
        if (d == null || d == DBNull.Value || string.IsNullOrEmpty(d.ToString()))
            return 0;
        return Convert.ToDecimal(d);
    }

이거 땜에 몇일 고생했는데... 이긍.. null값 때문일 줄이야... 잊어먹지는 않겠군,,,

댓글