ObjectDataSource의 매개 변수 값을 프로그래밍 방식으로 설정(VB)
작성자 : Scott Mitchell
이 자습서에서는 단일 입력 매개 변수를 수락하고 데이터를 반환하는 메서드를 DAL 및 BLL에 추가하는 방법을 살펴보겠습니다. 이 예제에서는 이 매개 변수를 프로그래밍 방식으로 설정합니다.
소개
이전 자습서에서 보았듯이 ObjectDataSource의 메서드에 매개 변수 값을 선언적으로 전달하는 데 다양한 옵션을 사용할 수 있습니다. 매개 변수 값이 하드 코딩되거나, 페이지의 웹 컨트롤에서 제공되거나, 데이터 원본 Parameter
개체에서 읽을 수 있는 다른 소스에 있는 경우, 예를 들어 해당 값은 코드 줄을 작성하지 않고 입력 매개 변수에 바인딩될 수 있습니다.
그러나 매개 변수 값이 기본 제공 데이터 Parameter
원본 개체 중 하나에서 아직 고려하지 않은 일부 원본에서 오는 경우가 있을 수 있습니다. 사이트에서 사용자 계정을 지원하는 경우 현재 로그인한 방문자의 사용자 ID에 따라 매개 변수를 설정할 수 있습니다. 또는 ObjectDataSource의 기본 개체의 메서드로 보내기 전에 매개 변수 값을 사용자 지정해야 할 수도 있습니다.
ObjectDataSource의 Select
메서드가 호출될 때마다 ObjectDataSource는 먼저 Selecting 이벤트를 발생합니다. 그런 다음 ObjectDataSource의 기본 개체 메서드가 호출됩니다. ObjectDataSource의 Selected 이벤트가 실행되면 (그림 1은 이 이벤트 시퀀스를 보여 줍니다). ObjectDataSource의 기본 개체 메서드에 전달된 매개 변수 값은 이벤트에 대한 Selecting
이벤트 처리기에서 설정하거나 사용자 지정할 수 있습니다.
그림 1: ObjectDataSource 및 Selected
Selecting
이벤트는 기본 개체의 메서드가 호출되기 전과 후에 발생합니다(전체 크기 이미지를 보려면 클릭).
이 자습서에서는 형식의 Integer
단일 입력 매개 변수 Month
를 수락하고 지정된 Month
에서 고용 1주년을 가진 직원으로 채워진 개체를 반환 EmployeesDataTable
하는 메서드를 DAL 및 BLL에 추가하는 방법을 살펴보겠습니다. 이 예제에서는 현재 월을 기반으로 프로그래밍 방식으로 이 매개 변수를 설정하여 "이번 달 직원 1주년" 목록을 보여 줍니다.
그럼 시작하겠습니다.
1단계: 에 메서드 추가EmployeesTableAdapter
첫 번째 예제에서는 지정된 달에 발생한 직원을 HireDate
검색하는 수단을 추가해야 합니다. 아키텍처에 따라 이 기능을 제공하려면 먼저 적절한 SQL 문에 매핑되는 에서 EmployeesTableAdapter
메서드를 만들어야 합니다. 이 작업을 수행하려면 먼저 Northwind 형식 데이터 세트를 여세요. 레이블을 마우스 오른쪽 단추로 EmployeesTableAdapter
클릭하고 쿼리 추가를 선택합니다.
그림 2: 에 새 쿼리 EmployeesTableAdapter
추가(전체 크기 이미지를 보려면 클릭)
행을 반환하는 SQL 문을 추가하도록 선택합니다. 문 지정 SELECT
화면에 도달하면 의 기본 SELECT
문이 EmployeesTableAdapter
이미 로드됩니다. 절WHERE DATEPART(m, HireDate) = @Month
에 를 추가하기 WHERE
만 하면 입니다. DATEPART 는 형식의 datetime
특정 날짜 부분을 반환하는 T-SQL 함수입니다. 이 경우 를 사용하여 DATEPART
열의 월을 반환합니다 HireDate
.
Parameter" /> 보다 작거나 같은 행만 반환합니다.
그림 3: 열이 HireDate
매개 변수보다 작거나 같은 @HiredBeforeDate
행만 반환합니다(전체 크기 이미지를 보려면 클릭).
마지막으로 및 GetDataBy
메서드 이름을 각각 및 GetEmployeesByHiredDateMonth
로 FillByHiredDateMonth
변경 FillBy
합니다.
그림 4: 보다 적절한 방법 이름 FillBy
선택 및 GetDataBy
(전체 크기 이미지를 보려면 클릭)
마침을 클릭하여 마법사를 완료하고 DataSet의 디자인 화면으로 돌아갑니다. 이제 는 EmployeesTableAdapter
지정된 달에 고용된 직원에 액세스하기 위한 새로운 방법 집합을 포함해야 합니다.
그림 5: DataSet의 디자인 화면에 새 메서드가 나타납니다(전체 크기 이미지를 보려면 클릭).
2단계: 비즈니스 논리 계층에 메서드 추가GetEmployeesByHiredDateMonth(month)
애플리케이션 아키텍처는 비즈니스 논리 및 데이터 액세스 논리에 대해 별도의 계층을 사용하므로 지정된 날짜 이전에 고용된 직원을 검색하기 위해 DAL을 호출하는 메서드를 BLL에 추가해야 합니다. EmployeesBLL.vb
파일을 열고 다음 메서드를 추가합니다.
<System.ComponentModel.DataObjectMethodAttribute _
(System.ComponentModel.DataObjectMethodType.Select, False)> _
Public Function GetEmployeesByHiredDateMonth(ByVal month As Integer) _
As Northwind.EmployeesDataTable
Return Adapter.GetEmployeesByHiredDateMonth(month)
End Function
이 클래스 GetEmployeesByHiredDateMonth(month)
의 다른 메서드와 마찬가지로 DAL을 호출하고 결과를 반환하기만 하면됩니다.
3단계: 채용 기념일이 이번 달인 직원 표시
이 예제의 마지막 단계는 채용 기념일이 이번 달인 직원을 표시하는 것입니다. 먼저 폴더의 페이지에 BasicReporting
GridView를 ProgrammaticParams.aspx
추가하고 새 ObjectDataSource를 데이터 원본으로 추가합니다. 로 설정된 클래스를 EmployeesBLL
사용하도록 ObjectDataSource를 SelectMethod
구성합니다 GetEmployeesByHiredDateMonth(month)
.
그림 6: 클래스 사용 EmployeesBLL
(전체 크기 이미지를 보려면 클릭)
그림 7: 메서드에서 GetEmployeesByHiredDateMonth(month)
선택(전체 크기 이미지를 보려면 클릭)
마지막 화면에서는 매개 변수 값의 원본을 month
제공하도록 요청합니다. 프로그래밍 방식으로 이 값을 설정하므로 매개 변수 원본을 기본 없음 옵션으로 설정하고 마침을 클릭합니다.
그림 8: 매개 변수 원본을 없음으로 설정(전체 크기 이미지를 보려면 클릭)
이렇게 하면 ObjectDataSource 컬렉션 SelectParameters
에 지정된 값이 없는 개체가 생성 Parameter
됩니다.
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
OldValuesParameterFormatString="original_{0}"
SelectMethod="GetEmployeesByHiredDateMonth" TypeName="EmployeesBLL">
<SelectParameters>
<asp:Parameter Name="month" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
이 값을 프로그래밍 방식으로 설정하려면 ObjectDataSource Selecting
이벤트에 대한 이벤트 처리기를 만들어야 합니다. 이렇게 하려면 디자인 보기로 이동하고 ObjectDataSource를 두 번 클릭합니다. 또는 ObjectDataSource를 선택하고 속성 창 이동한 다음 번개 모양 아이콘을 클릭합니다. 다음으로, 이벤트 옆에 Selecting
있는 텍스트 상자를 두 번 클릭하거나 사용하려는 이벤트 처리기의 이름을 입력합니다. 세 번째 옵션으로 페이지의 코드 숨김 클래스 맨 위에 있는 두 개의 드롭다운 목록에서 ObjectDataSource 및 해당 Selecting
이벤트를 선택하여 이벤트 처리기를 만들 수 있습니다.
그림 9: 속성 창에서 번개 모양 아이콘을 클릭하여 웹 컨트롤의 이벤트를 나열합니다.
세 가지 방법 모두 ObjectDataSource 이벤트에 Selecting
대한 새 이벤트 처리기를 페이지의 코드 숨김 클래스에 추가합니다. 이 이벤트 처리기에서는 를 사용하여 e.InputParameters(parameterName)
매개 변수 값을 읽고 쓸 수 있습니다. 여기서 parameterName
는 태그의 Name
특성 <asp:Parameter>
값입니다( InputParameters
컬렉션은 에서와 같이 e.InputParameters(index)
서수로 인덱싱할 수도 있음). 매개 변수를 month
현재 월로 설정하려면 이벤트 처리기에 다음을 Selecting
추가합니다.
Protected Sub ObjectDataSource1_Selecting _
(sender As Object, e As ObjectDataSourceSelectingEventArgs) _
Handles ObjectDataSource1.Selecting
e.InputParameters("month") = DateTime.Now.Month
End Sub
브라우저를 통해 이 페이지를 방문할 때 1994년부터 회사와 함께 해온 로라 캘러핸(Laura Callahan)이 이번 달(3월)에 고용된 것을 볼 수 있습니다.
그림 10: 이번 달의 기념일이 표시된 직원(전체 크기 이미지를 보려면 클릭)
요약
ObjectDataSource의 매개 변수 값은 일반적으로 코드 줄을 요구하지 않고 선언적으로 설정할 수 있지만 프로그래밍 방식으로 매개 변수 값을 쉽게 설정할 수 있습니다. 기본 개체의 Selecting
메서드가 호출되기 전에 발생하는 ObjectDataSource 이벤트에 대한 이벤트 처리기를 만들고 컬렉션을 통해 InputParameters
하나 이상의 매개 변수에 대한 값을 수동으로 설정하기만 하면 됩니다.
이 자습서에서는 기본 보고 섹션을 마무리합니다. 다음 자습서에서는 필터링 및 Master-Details 시나리오 섹션을 시작하여 방문자가 데이터를 필터링하고 master 보고서에서 세부 정보 보고서로 드릴다운할 수 있도록 하는 기술을 살펴봅니다.
행복한 프로그래밍!
저자 정보
7개의 ASP/ASP.NET 책의 저자이자 4GuysFromRolla.com 창립자인 Scott Mitchell은 1998년부터 Microsoft 웹 기술을 연구해 왔습니다. Scott은 독립 컨설턴트, 트레이너 및 작가로 일합니다. 그의 최신 책은 샘스 자신을 가르친다 ASP.NET 2.0 24 시간. 그는 에서 찾을 수있는 그의 블로그를 통해 또는 에 mitchell@4GuysFromRolla.comhttp://ScottOnWriting.NET도달 할 수 있습니다.
특별 감사
이 자습서 시리즈는 많은 유용한 검토자가 검토했습니다. 이 자습서의 수석 검토자는 Hilton Giesenow였습니다. 예정된 MSDN 문서를 검토하시겠습니까? 그렇다면 에 줄을 놓습니다 mitchell@4GuysFromRolla.com.