연습: GridView 웹 서버 컨트롤에서 편집하는 동안 드롭다운 목록 표시

Visual Studio 2010

GridView 컨트롤에는 기본적으로 편집할 텍스트 상자가 표시됩니다. ASP.NET GridView 컨트롤의 기본 제공 고급 기능을 사용하여 편집 표시에 드롭다운 목록을 추가할 수 있습니다. 이 작업은 별도의 코드를 작성하지 않고 Web Form에서 직접 수행할 수 있습니다. 이 연습에서 수행할 작업은 다음과 같습니다.

  • GridView 컨트롤을 구성하여 SQL 데이터 표시

  • GridView 컨트롤의 데이터 표시

  • GridView 컨트롤을 편집하는 동안 드롭다운 목록 표시

이 연습에서 만드는 페이지의 전체 목록은 항목의 끝에 나와 있습니다. 이 항목에 수반되는 Visual Studio 프로젝트 및 소스 코드를 다운로드하십시오.

이 연습을 완료하려면 다음과 같은 요건이 필요합니다.

  • 컴퓨터에 설치된 Visual Studio 또는 Visual Web Developer Express

    참고참고

    Visual Studio를 사용하는 경우 이 연습에서는 Visual Studio를 처음 시작할 때 웹 개발 설정 컬렉션을 선택했다고 가정합니다. 자세한 내용은 방법: 웹 개발 환경 설정 선택을 참조하십시오.

  • SQL Server Express. SQL Server가 설치되어 있으면 대신 이를 사용할 수 있지만 일부 절차를 약간 수정해야 합니다.

  • 사용자 컴퓨터에 설치된 Northwind 샘플 데이터베이스. SQL Server 샘플 Northwind 데이터베이스를 다운로드 및 설치하는 방법에 대한 자세한 내용은 Microsoft SQL Server 웹 사이트의 예제 데이터베이스 설치를 참조하십시오.

    참고참고

    이외 다른 여러 가지 방법으로 Northwind 데이터베이스에 연결할 수 있습니다.

이 연습에서는 웹 사이트 프로젝트를 사용합니다. 대신 웹 응용 프로그램 프로젝트를 사용할 수도 있습니다. 이러한 웹 프로젝트 형식 간의 차이점에 대한 자세한 내용은 웹 응용 프로그램 프로젝트와 웹 사이트 프로젝트 비교를 참조하십시오.

파일 시스템 웹 사이트를 만들려면

  1. Visual Studio 또는 Visual Web Developer Express를 엽니다.

  2. 파일 메뉴에서 새 웹 사이트를 클릭합니다.

    새 웹 사이트 대화 상자가 표시됩니다.

  3. 설치된 템플릿에서 Visual Basic 또는 VisualC#을 클릭한 다음 ASP.NET 웹 사이트를 선택합니다.

  4. 위치 상자에서 파일 시스템을 선택하고 웹 사이트의 페이지를 보관할 폴더의 이름을 입력합니다.

    예를 들어, 폴더 이름 C:\WebSites를 입력합니다.

  5. 확인을 클릭합니다.

    Visual Studio에서 레이아웃(마스터 페이지, Default.aspx 및 About.aspx 콘텐츠 페이지, CSS 스타일시트), Ajax(클라이언트 스크립트 파일) 및 인증(ASP.NET 멤버 자격)을 위한 미리 빌드된 기능이 포함된 웹 사이트 프로젝트를 만듭니다.

시작하려면 Northwind 데이터베이스에 대한 연결을 만들어야 합니다.

SQL Server에 대한 연결을 만들려면

  1. 서버 탐색기에서 데이터 연결을 마우스 오른쪽 단추로 클릭하고 연결 추가를 클릭합니다. Visual Web Developer Express를 사용하는 경우 데이터베이스 탐색기를 사용합니다.

    연결 추가 대화 상자가 나타납니다.

    • 데이터 소스 목록에 Microsoft SQL Server 데이터베이스 파일(SqlClient)이 표시되지 않으면 변경을 클릭하고 데이터 소스 변경 대화 상자에서 Microsoft SQL Server 데이터베이스 파일(SqlClient)을 선택합니다.

    • 데이터 소스 선택 페이지가 나타나면 데이터 소스 목록에서 사용할 데이터 소스의 형식을 선택합니다. 이 연습에서 데이터 소스 형식은 Microsoft SQL Server입니다. 데이터 공급자 목록에서 .NET Framework Data Provider for SQL Server를 클릭한 다음 계속을 클릭합니다.

    참고참고

    Visual Web Developer에 서버 탐색기 탭이 표시되지 않으면 보기 메뉴에서 서버 탐색기를 클릭합니다. 데이터베이스 탐색기 탭이 표시되지 않으면 보기 메뉴에서 데이터베이스 탐색기를 클릭합니다.

  2. 데이터베이스 파일 이름 필드에서 Northwind 샘플 데이터베이스를 설치한 위치를 입력하거나 찾습니다.

  3. Northwnd.mdf 데이터베이스 파일을 선택하고 열기를 클릭합니다.

  4. 암호 저장 확인란을 선택합니다.

  5. 연결 테스트를 클릭하고 제대로 작동하는지 확인한 다음 확인을 클릭합니다.

    서버 탐색기의 데이터 연결 아래에 새 연결이 만들어졌습니다.

이 연습 부분에서는 표에 데이터를 동적으로 채웁니다.

간단한 정렬을 사용하려면

  1. Default.aspx 파일로 전환하거나 이 파일을 엽니다.

  2. 디자인 뷰로 전환합니다.

  3. 도구 상자데이터 그룹에서 GridView 컨트롤을 페이지로 끌어옵니다.

  4. GridView 작업 메뉴의 데이터 소스선택 상자에서 <새 데이터 소스>를 클릭합니다.

    데이터 소스 구성 마법사가 나타납니다.

  5. 데이터베이스를 클릭합니다.

    이는 SQL Server나 그 밖의 OLE-DB 호환 데이터베이스와 같이 SQL 문을 지원하는 데이터베이스에서 데이터를 가져오려 한다는 의미입니다.

  6. 데이터 소스의 ID 지정 상자에 기본 데이터 소스 컨트롤 이름인 SqlDataSource1이 표시됩니다. 이 이름을 그대로 둘 수 있습니다.

  7. 확인을 클릭합니다.

    데이터 소스 구성 마법사가 표시됩니다.

  8. "SQL Server에 대한 연결을 만들려면"에서 만든 연결을 응용 프로그램이 데이터베이스에 연결하기 위해 사용해야 하는 데이터 연결 상자에 입력한 후 다음을 클릭합니다.

    마법사는 구성 파일에 연결 문자열을 저장할 수 있는 페이지를 표시합니다. 구성 파일에 연결 문자열을 저장할 경우 두 가지 장점이 있습니다.

    • 페이지에 저장하는 것보다 안전합니다.

    • 여러 페이지에서 동일한 연결 문자열을 사용할 수 있습니다.

  9. 예, 이 연결을 다음으로 저장합니다. 확인란을 선택하고 다음을 클릭합니다.

    데이터베이스에서 가져올 데이터를 지정할 수 있는 페이지가 표시됩니다.

  10. 테이블 또는 뷰의 열 지정이름 상자에서 Employees를 클릭합니다.

  11. 에서 EmployeeId, LastName, FirstName, HireDateCity 확인란을 선택합니다.

    마법사는 만들고 있는 SQL 문을 페이지 아래쪽의 상자에 표시합니다.

    참고참고

    마법사에서는 선택 기준(WHERE 절) 및 기타 SQL 쿼리 옵션을 지정할 수 있습니다. 이 연습에서는 선택이나 정렬 옵션 없이 간단한 문을 만듭니다.

  12. 고급을 클릭하고 Insert, Update 및 Delete 문 생성 확인란을 선택한 다음 확인을 클릭합니다.

    이렇게 하면 앞에서 구성한 Select 문을 기반으로 SqlDataSource1 컨트롤에 대해 Insert, Update 및 Delete 문이 생성됩니다.

    참고참고

    또는 사용자 지정 SQL 문 또는 저장 프로시저 지정을 선택하고 SQL 쿼리를 입력하여 문을 수동으로 만들 수 있습니다.

  13. 다음을 클릭합니다.

  14. 쿼리 테스트를 클릭하여 원하는 데이터가 검색되는지 확인합니다.

  15. 마침을 클릭합니다.

  16. GridView 컨트롤을 마우스 오른쪽 단추로 클릭한 다음 스마트 태그 표시를 클릭합니다. GridView 작업 메뉴에서 편집 사용 상자를 선택합니다.

이제 페이지를 테스트할 수 있습니다.

페이지를 테스트하려면

  1. Ctrl+F5를 눌러 페이지를 실행합니다.

    GridView 컨트롤에 EmployeeId, LastName, FirstName, HireDateCity 열이 표시됩니다.

  2. 행 옆에 있는 편집 링크를 클릭합니다.

    편집하기 위해 선택한 행이 LastName, FirstName, HireDateCity 열에 편집 가능한 텍스트 상자로 표시됩니다. EmployeeId는 키 필드이며 편집할 수 없으므로 텍스트 상자에 표시되지 않습니다.

  3. LastName과 같은 필드를 변경하고 업데이트를 클릭합니다.

    GridView 컨트롤에 EmployeeId, LastName, FirstName, HireDateCity 열과 함께 새 값으로 업데이트된 LastName 열이 표시됩니다.

  4. 브라우저를 닫습니다.

이 연습 부분에서는 표에서 행을 편집하는 동안 선택할 드롭다운 목록을 추가할 수 있습니다.

편집하는 동안 드롭다운 목록을 표시하려면

  1. 도구 상자데이터 노드에서 SqlDataSource 컨트롤을 페이지로 끌어옵니다.

    SqlDataSource2라는 새 데이터 소스 컨트롤이 만들어집니다.

  2. SqlDataSource 작업 메뉴에서 데이터 소스 구성을 선택합니다.

  3. 앞에서 만든 연결을 응용 프로그램이 데이터베이스에 연결하기 위해 사용해야 하는 데이터 연결 상자에 입력합니다.

  4. 다음을 클릭합니다.

  5. Select 문 구성 페이지에서 테이블 또는 뷰의 열 지정을 선택한 후 이름 상자에서 Employees를 클릭합니다.

  6. City 열만 선택한 다음 고유한 행만 반환 확인란을 선택합니다. 다음을 클릭합니다.

  7. 쿼리 테스트를 클릭하여 데이터를 미리 본 다음 마침을 클릭합니다.

  8. GridView 컨트롤을 마우스 오른쪽 단추로 클릭한 다음 스마트 태그 표시를 선택합니다. GridView 작업 메뉴에서 열 편집을 선택합니다.

  9. 필드 대화 상자의 선택한 필드 목록에서 City를 선택합니다.

  10. 이 필드를 TemplateField로 변환 링크를 클릭합니다.

  11. 확인을 클릭하여 필드 대화 상자를 닫습니다.

  12. GridView 컨트롤을 마우스 오른쪽 단추로 클릭한 다음 스마트 태그 표시를 클릭합니다. GridView 작업 메뉴에서 템플릿 편집을 선택합니다.

  13. 표시 드롭다운 목록에서 EditItemTemplate을 선택합니다.

  14. 템플릿에서 기본 TextBox 컨트롤을 마우스 오른쪽 단추로 클릭한 다음 삭제를 선택하여 이 컨트롤을 제거합니다.

  15. 도구 상자표준 탭에서 DropDownList 컨트롤을 템플릿으로 끌어옵니다.

  16. DropDownList 컨트롤을 마우스 오른쪽 단추로 클릭한 다음 스마트 태그 표시를 클릭합니다. DropDownList 작업 메뉴에서 데이터 소스선택을 클릭합니다.

  17. SqlDataSource2를 선택합니다.

  18. 확인을 클릭합니다.

  19. DropDownList 작업 메뉴에서 데이터 바인딩 편집을 선택합니다. DropDownList 컨트롤의 SelectedValue 속성이 DataBindings 대화 상자에서 선택됩니다.

  20. 필드 바인딩 라디오 단추를 클릭하고 바인딩 대상City를 선택합니다.

  21. 양방향 데이터 바인딩 확인란을 선택합니다.

  22. 확인을 클릭합니다.

  23. GridView 컨트롤을 마우스 오른쪽 단추로 클릭한 다음 스마트 태그 표시를 클릭합니다. GridView 작업 메뉴에서 템플릿 편집 끝내기를 클릭합니다.

    보안 정보보안 정보

    ASP.NET 웹 페이지의 사용자 입력에는 잠재적으로 악의적인 클라이언트 스크립트가 포함될 수 있습니다. 기본적으로 ASP.NET 웹 페이지에서는 사용자 입력의 유효성을 검사하여 입력에 HTML 요소나 스크립트가 포함되지 않도록 합니다. 이러한 유효성 검사를 사용하는 이상, 사용자 입력에 있는 스크립트 또는 HTML 요소를 명시적으로 검사할 필요가 없습니다. 자세한 내용은 스크립트 악용 개요를 참조하십시오.

이제 페이지를 테스트할 수 있습니다.

페이지를 테스트하려면

  1. Ctrl+F5를 눌러 페이지를 실행합니다.

    GridView 컨트롤에 EmployeeId, LastName, FirstName, HireDateCity 열이 표시됩니다.

  2. 행 옆에 있는 편집 링크를 클릭합니다.

    현재 City 값이 드롭다운 목록에서 미리 선택되어 있습니다.

    드롭다운 목록에서 다른 City 값을 선택하고 업데이트를 클릭합니다.

    City 필드가 드롭다운 목록에서 선택된 값으로 업데이트됩니다.

설명

다음 예제에서는 이 연습에서 만드는 페이지의 태그를 보여 줍니다.

코드


<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="EmployeeID" DataSourceID="SqlDataSource1">
            <Columns>
                <asp:CommandField ShowEditButton="True" />
                <asp:BoundField DataField="EmployeeID" HeaderText="EmployeeID" 
                    InsertVisible="False" ReadOnly="True" SortExpression="EmployeeID" />
                <asp:BoundField DataField="LastName" HeaderText="LastName" 
                    SortExpression="LastName" />
                <asp:BoundField DataField="FirstName" HeaderText="FirstName" 
                    SortExpression="FirstName" />
                <asp:BoundField DataField="HireDate" HeaderText="HireDate" 
                    SortExpression="HireDate" />
                <asp:TemplateField HeaderText="City" SortExpression="City">
                    <EditItemTemplate>
                        <asp:DropDownList ID="DropDownList1" runat="server" 
                            DataSourceID="SqlDataSource2" DataTextField="City" DataValueField="City" 
                            SelectedValue='<%# Bind("City") %>'>
                        </asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("City") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
        <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>" 
            DeleteCommand="DELETE FROM [Employees] WHERE [EmployeeID] = @EmployeeID" 
            InsertCommand="INSERT INTO [Employees] ([LastName], [FirstName], [HireDate], [City]) VALUES (@LastName, @FirstName, @HireDate, @City)" 
            SelectCommand="SELECT [EmployeeID], [LastName], [FirstName], [HireDate], [City] FROM [Employees]" 
            UpdateCommand="UPDATE [Employees] SET [LastName] = @LastName, [FirstName] = @FirstName, [HireDate] = @HireDate, [City] = @City WHERE [EmployeeID] = @EmployeeID">
            <DeleteParameters>
                <asp:Parameter Name="EmployeeID" Type="Int32" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="LastName" Type="String" />
                <asp:Parameter Name="FirstName" Type="String" />
                <asp:Parameter Name="HireDate" Type="DateTime" />
                <asp:Parameter Name="City" Type="String" />
                <asp:Parameter Name="EmployeeID" Type="Int32" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="LastName" Type="String" />
                <asp:Parameter Name="FirstName" Type="String" />
                <asp:Parameter Name="HireDate" Type="DateTime" />
                <asp:Parameter Name="City" Type="String" />
            </InsertParameters>
        </asp:SqlDataSource>

    </div>
    <asp:SqlDataSource ID="SqlDataSource2" runat="server" 
        ConnectionString="<%$ ConnectionStrings:NORTHWNDConnectionString %>" 
        SelectCommand="SELECT DISTINCT [City] FROM [Employees]"></asp:SqlDataSource>
    </form>
</body>
</html>


이 연습에서는 컨트롤에 바인딩된 열의 값으로 채워진 드롭다운 목록을 표시하는 방법을 보여 주었지만 이외 다른 여러 가지 방법으로 드롭다운 목록을 채울 수 있습니다. 다른 테이블의 값으로 드롭다운 목록을 채우는 방법을 보려면 DataItem에 대한 예제를 참조하십시오.

표시: