ASP.NET Visual C#을 사용하여 DataGrid 컨트롤에 대한 요약 행 만들기

이 문서에서는 ASP.NET Visual C#을 사용하여 DataGrid 컨트롤에 대한 요약 행을 만드는 방법을 설명합니다.

원래 제품 버전: Visual C#
원본 KB 번호: 326339

요약

이 문서에서는 Visual C# .NET 프로젝트를 만들고, Northwind 데이터베이스의 Sales Totals by Amount 보기에 액세스하는 코드를 추가한 다음, Sales Totals by Amount 보기를 DataGrid에 바인딩합니다. 이 샘플에서는 DataGrid의 이벤트를 사용하여 ItemDataBound DataGrid에 SaleAmount 데이터를 바인딩할 때 필드의 합계를 계산합니다. 또한 이 샘플에서는 DataGrid의 바닥글을 사용하여 요약 또는 합계를 표시합니다.

이 문서의 Microsoft Visual Basic .NET 버전은 Visual Basic .NET을 사용하여 ASP.NET DataGrid에 대한 요약 행을 만드는 방법을 참조하세요.

이 문서에서는 다음 .NET Framework 클래스 라이브러리 네임스페이스 를 참조합니다System.Data.SqlClient.

요구 사항

다음 목록에서는 필요한 권장 하드웨어, 소프트웨어, 네트워크 인프라 및 서비스 팩을 간략하게 설명합니다.

  • Windows
  • .NET Framework
  • Visual Studio .NET
  • 인터넷 정보 서비스(IIS)
  • SQL Server 7.0 이상 및 Northwind 데이터베이스

참고

Northwind 데이터베이스는 SQL Server 7.0 이상에 포함되어 있습니다.

Visual C# .NET 프로젝트를 만들고 DataGrid 컨트롤을 추가합니다.

이 섹션에서는 Visual C# .NET 프로젝트를 만들고, DataGrid의 형식을 선택한 다음, DataGrid를 설정하여 바닥글을 표시합니다. 바닥글을 사용하여 요약을 표시하므로 바닥글을 표시하는 것이 중요합니다.

참고

기본적으로 ShowFooter 속성은 꺼져 있습니다.

  1. Visual Studio .NET을 시작합니다. Visual Studio .NET IDE(통합 개발 환경)가 나타납니다.

  2. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 클릭합니다.

  3. 새 프로젝트 대화 상자의 프로젝트 형식에서 Visual C# 프로젝트를 클릭한 다음 템플릿에서 ASP.NET 웹 애플리케이션 클릭합니다.

  4. 새 프로젝트 대화 상자에서 이름 상자를 사용할 수 없습니다(흐리게 표시됨). 위치 상자에는 텍스트(또는 이와 유사한)http://localhost/WebApplication1가 포함됩니다.

    위치를 http://localhost/SummaryRow로 변경한 다음 확인을 클릭합니다. 이름이 WebForm1.aspx 웹 양식을 포함하는 새 프로젝트가 만들어집니다.

  5. 솔루션 탐색기 WebForm1.aspx 두 번 클릭합니다.

  6. 도구 상자에서 양식으로 DataGrid 컨트롤을 끌어옵니다.

  7. DataGrid를 마우스 오른쪽 단추로 클릭한 다음 자동 서식을 클릭합니다. 색상형 1을 클릭한 다음 확인을 클릭합니다.

  8. DataGrid를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다. 속성 대화 상자에서 ShowFooter 속성의 값을 True로 변경합니다.

데이터베이스에 액세스하는 코드 작성

이 섹션에서는 Northwind 데이터베이스에 있는 Sales Totals by Amount 뷰를 사용하여 필드에 대한 요약을 SaleAmount 계산합니다. Sales Totals by Amount 보기에는 , CompanyName및 필드가 SaleAmount 포함Orders됩니다.

  1. Visual Studio .NET IDE에서 웹 양식을 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 클릭합니다.

  2. 코드 숨김 창에서 페이지 맨 위에 다음 코드를 추가합니다.

    using System.Data.SqlClient;
    
  3. 클래스 선언 섹션에서 다음 코드를 추가합니다.

    private double myTotal; //This variable tracks the running total.
    
  4. 이벤트의 코드를 Page_Load 다음 코드로 바꿉 있습니다.

    private void Page_Load (object sender, System.EventArgs e)
    {
        //Connect to the database, retrieve data, and then fill the data in the DataSet.
        SqlConnection myConnection = new SqlConnection ("server=(local);uid=sa;" +
                        "pwd=password;database=northwind");
        SqlDataAdapter myDataAdapter = new SqlDataAdapter ("SELECT top 15 [OrderID], [CompanyName], " +
                        "[SaleAmount] FROM [Northwind].[dbo].[Sales Totals by Amount]", myConnection);
        DataSet myDataSet = new DataSet ();
        myDataAdapter.Fill (myDataSet);
    
        //Set the DataSource for the DataGrid, and then bind the data.
        DataGrid1.DataSource = myDataSet;
        DataGrid1.DataBind ();
    }
    
  5. 환경에 맞게 연결 문자열 수정합니다.

  6. 웹 양식 Designer 생성된 코드 영역을 확장한 다음 함수에 InitializeComponent 다음 문을 추가합니다.

    this.DataGrid1.ItemDataBound
    += new System.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);
    

ItemDataBound 이벤트 사용

이벤트는 ItemDataBound 항목이 DataGrid 컨트롤에 바인딩된 데이터인 후에 발생합니다. 이 이벤트는 클라이언트에 표시되기 전에 데이터 항목에 액세스할 수 있는 마지막 기회를 제공합니다. 이 이벤트가 발생한 후 데이터 항목은 null이며 더 이상 사용할 수 없습니다.

데이터가 바인딩된 각 항목에 대해 속성을 검사 ItemType 합니다. 가 또는 형식인 경우 ItemType 값이 포함된 항목의 마지막 셀에서 값을 받습니다SaleAmount.ItemAlternatingItem 이 샘플에서는 실행 중인 요약 변수에 이 값을 추가합니다. 가 이 ItemTypeFooter면 모든 행에서 합계를 받습니다. 따라서 요약 변수의 값을 마지막 셀의 텍스트 값에 할당합니다.

참고

이 코드는 서식 식을 사용하여 데이터에 대한 SaleAmount 균일한 모양을 제공합니다.

이벤트 다음에 다음 코드를 추가합니다 Page_Load .

private void DataGrid1_ItemDataBound (object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
    switch ((int) (e.Item.ItemType))
    {
        case (int) ListItemType.Item:
        case (int) ListItemType.AlternatingItem:
            //Calculate total for the field of each row and alternating row.
            myTotal += Convert.ToDouble (e.Item.Cells[2].Text);
            //Format the data, and then align the text of each cell to the right.
            e.Item.Cells[2].Text = Convert.ToDouble (e.Item.Cells[2].Text).ToString ("##,##0.00");
            e.Item.Cells[2].Attributes.Add ("align", "right");
            break;
        case (int) ListItemType.Footer:
            //Use the footer to display the summary row.
            e.Item.Cells[1].Text = "Total Sales";
            e.Item.Cells[1].Attributes.Add ("align", "left");
            e.Item.Cells[2].Attributes.Add ("align", "right");
            e.Item.Cells[2].Text = myTotal.ToString ("c");
            break;
    }
}

프로젝트 빌드 및 코드 테스트

  1. 파일 메뉴에서 모두 저장을 클릭합니다.
  2. 빌드 메뉴에서 솔루션 빌드를 클릭합니다.
  3. 솔루션 탐색기 .aspx 페이지를 마우스 오른쪽 단추로 클릭한 다음 브라우저에서 보기를 클릭합니다. .aspx 페이지가 브라우저에 나타나고 DataGrid에 OrderID, CompanyNameSaleAmount 열이 표시됩니다. 바닥글에 SaleAmount 열의 합계가 표시됩니다.

참조