데이터 바인딩에서 DropDownList 컨트롤로 Visual C#을 사용하여 정적 항목 및 결과 추가

이 문서에서는 DropDownList 컨트롤에 정적 항목 및 데이터 바인딩된 항목을 추가하는 방법을 보여 줍니다. 이 문서의 샘플은 DropDownList 컨트롤을 초기 항목으로 채웁니다.

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

요구 사항

다음 목록에서는 필요한 권장 하드웨어 및 소프트웨어를 간략하게 설명합니다.

  • Microsoft Windows
  • .NET Framework
  • Visual Studio .NET
  • 인터넷 정보 서비스(IIS)
  • SQL Server

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

Visual C#을 사용하여 ASP.NET 웹 애플리케이션 만들기

DDLSample이라는 새 ASP.NET 웹 애플리케이션을 만들려면 다음 단계를 수행합니다.

  1. Visual Studio .NET을 엽니다.
  2. 파일 메뉴에서 새로 만들기를 가리킨 다음 프로젝트를 선택합니다.
  3. 새 프로젝트 대화 상자의 프로젝트 형식에서 Visual C# 프로젝트를 선택한 다음 템플릿에서 ASP.NET 웹 애플리케이션 선택합니다.
  4. 위치 상자에서 기본 URL의 WebApplication1DDLSample로 바꿉니다. 로컬 서버를 사용하는 경우 위치 상자에 가 표시되도록 서버 이름을 그대로 http://localhost 둘 수 있습니다.http://localhost/DDLSample

샘플 만들기

다음 단계에서는 DropDownList 컨트롤이 포함된 .aspx 페이지를 만듭니다. DropDownList 컨트롤은 SQL Server Pubs 데이터베이스의 Authors 테이블 열에 바인딩된 데이터입니다.

  1. 프로젝트에 웹 양식을 추가하려면 다음 단계를 수행합니다.

    1. 솔루션 탐색기 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 추가를 선택한 다음 웹 양식 추가를 선택합니다.
    2. .aspx 페이지 이름을 DropDown.aspx 다음 열기를 선택합니다.
  2. 편집기에서 디자인 보기에서 페이지가 열려 있는지 확인합니다. 페이지에 DropDownList 컨트롤을 추가합니다. 속성 창에서 컨트롤의 IDAuthorList로 변경합니다.

  3. DropDownList 컨트롤 뒤의 페이지에 레이블 컨트롤을 추가합니다. 속성 창에서 컨트롤의 IDCurrentItem으로 변경합니다.

  4. 레이블 컨트롤 뒤의 페이지에 단추 컨트롤을 추가합니다. 속성 창에서 컨트롤의 IDGetItem으로 변경한 다음 Text 속성을 Get Item으로 변경합니다.

  5. 페이지를 마우스 오른쪽 단추로 클릭한 다음 코드 보기를 선택합니다. 그러면 편집기에서 코드 숨김 클래스 파일이 열립니다.

  6. 샘플 코드가 System.Data.SqlClient 제대로 작동하도록 코드 숨김 클래스 파일에 네임스페이스를 추가합니다. 네임스페이스의 전체 목록은 다음과 같이 표시됩니다.

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    
  7. 이벤트에 다음 코드를 추가합니다 Page_Load .

    private void Page_Load (object sender, System.EventArgs e)
    {
        if (!IsPostBack)
        {
            SqlConnection myConn = new SqlConnection (
                "Server=localhost;Database=Pubs;Integrated Security=SSPI");
            SqlCommand myCmd = new SqlCommand (
                "SELECT au_id, au_lname FROM Authors", myConn);
            myConn.Open ();
            SqlDataReader myReader = myCmd.ExecuteReader ();
    
            //Set up the data binding.
            AuthorList.DataSource = myReader;
            AuthorList.DataTextField = "au_lname";
            AuthorList.DataValueField = "au_id";
            AuthorList.DataBind ();
    
            //Close the connection.
            myConn.Close ();
            myReader.Close ();
    
            //Add the item at the first position.
            AuthorList.Items.Insert (0, "<-- Select -->");
        }
    }
    

    연결 문자열에서 통합 보안을 사용하려면 다음 예제와 같이 애플리케이션의 Web.config 파일을 변경하고 구성 요소의 identity 특성을 true로 설정합니다impersonate.

    <configuration>
        <system.web>
            <identity impersonate="true" />
        </system.web>
    </configuration>
    

    자세한 내용은 ASP.NET 가장을 참조하세요.

  8. 환경에 맞게 연결 문자열 수정합니다.

  9. .aspx 페이지의 편집기에서 디자인 보기로 전환합니다. GetItem을 두 번 클릭합니다. 코드 숨김 클래스 파일의 GetItem_Click 이벤트에 다음 코드를 추가합니다.

    private void GetItem_Click (object sender, System.EventArgs e)
    {
        string itemText = AuthorList.SelectedItem.Text;
        string itemValue = AuthorList.SelectedItem.Value;
        CurrentItem.Text = string.Format (
            "Selected Text is {0}, and Value is {1}", itemText, itemValue);
    }
    
  10. 파일 메뉴에서 모두 저장을 선택하여 웹 양식 및 기타 연결된 프로젝트 파일을 저장합니다.

  11. Visual Studio .NET IDE(통합 개발 환경)의 빌드 메뉴에서 빌드 를 선택하여 프로젝트를 빌드합니다.

  12. 솔루션 탐색기 .aspx 페이지를 마우스 오른쪽 단추로 클릭한 다음 브라우저에서 보기를 선택합니다. 페이지가 브라우저에서 열리고 드롭다운 목록 상자가 초기 데이터로 채워집니다.

  13. 드롭다운 목록 상자에서 항목을 선택합니다. CurrentItem 레이블 컨트롤에 선택한 항목이 표시됩니다. 또한 목록은 현재 위치와 정적 항목을 유지합니다.

문제 해결

  • 데이터 바인딩 코드 뒤의 컨트롤 컬렉션에 정적 항목을 추가하려면 ListItem 코드를 배치해야 합니다. 이 순서로 코드를 추가하지 않으면 정적 항목을 덮어쓰는 데이터 바인딩 코드로 목록이 다시 만들어집니다.
  • 샘플 코드는 속성을 확인 IsPostBack 하여 목록이 다시 만들어지는 것을 방지합니다. 또한 이 코드는 선택한 항목을 서버 왕복 간 목록의 현재 위치에 유지하도록 확인 IsPostBack 합니다.

참조