내보내기(0) 인쇄
모두 확장
이 문서는 기계로 번역한 것입니다. 원본 텍스트를 보려면 포인터를 문서의 문장 위로 올리십시오. 추가 정보
번역
원본
이 항목은 아직 평가되지 않았습니다.- 이 항목 평가

ObjectDataSourceMethodEventArgs 클래스

에 대 한 데이터를 제공의 Inserting, Updating, 및 Deleting 의 이벤트는 ObjectDataSource 컨트롤.

네임스페이스:  System.Web.UI.WebControls
어셈블리:  System.Web(System.Web.dll)
public class ObjectDataSourceMethodEventArgs : CancelEventArgs

ObjectDataSourceMethodEventArgs 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Public 메서드ObjectDataSourceMethodEventArgs새 인스턴스를 초기화를 ObjectDataSourceMethodEventArgs 클래스는 지정 된 입력된 매개 변수 컬렉션을 사용 합니다.
위쪽
  이름설명
Public 속성Cancel이벤트를 취소해야 할지 여부를 나타내는 값을 가져오거나 설정합니다. (CancelEventArgs에서 상속됨)
Public 속성InputParameters비즈니스 개체 메서드 매개 변수와 해당 값을 포함 하는 컬렉션을 가져옵니다.
위쪽
  이름설명
Public 메서드Equals(Object) 지정한 개체가 현재 개체와 같은지 여부를 확인합니다. (Object에서 상속됨)
Protected 메서드Finalize 개체가 가비지 수집자에서 회수되기 전에, 해당 개체에서 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드GetHashCode기본 해시 함수로 작동합니다. (Object에서 상속됨)
Public 메서드GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Protected 메서드MemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Public 메서드ToString현재 개체를 나타내는 문자열을 반환합니다. (Object에서 상속됨)
위쪽

ObjectDataSourceMethodEventArgs 클래스에서 사용 되는 OnSelecting, OnUpdating, OnInserting, 및 OnDeleting 메서드에 액세스 하는 전달 된 입력된 매개 변수를 제공 하는 Select, Update, Delete, 및 Insert 메서드를는 ObjectDataSource 컨트롤입니다. 이러한 매개 변수를 사용 하 여 액세스 되는 InputParameters 속성입니다. 대리인을 추가 하 여는 Selecting, Updating, Inserting, 또는 Deleting 이벤트를 검사 하 고 조작의 매개 변수 값 및 필요한 추가 전처리를 수행 합니다. 이 사전의 매개 변수를 변경 메서드 오버 로드는 작업에 대 한 호출에 적용 됩니다. 때의 DataObjectTypeName 속성에는 ObjectDataSource 제어 설정, 데이터 개체 속성만이 사전; 항목 수정할 수 있습니다 추가 하거나 매개 변수를 제거할 수 없습니다. 자세한 내용은 Delete.

ObjectDataSource 컨트롤 내부 비즈니스 개체를 라이프 사이클에서의 다양 한 시간에 작업을 처리할 수 있는 많은 이벤트를 노출 합니다. 다음 표에서 이벤트와 연관 된 EventArgs 클래스와 이벤트 처리기 대리자입니다.

event

EventArgs 클래스

이벤트 처리기 대리자

ObjectCreating .

바로 비즈니스 개체의 인스턴스가 만들어지기 전에 발생 합니다.

ObjectDataSourceEventArgs

ObjectDataSourceObjectEventHandler

ObjectCreated .

비즈니스 개체의 인스턴스를 만든 후에 발생 합니다.

ObjectDataSourceEventArgs

ObjectDataSourceObjectEventHandler

Selecting .

데이터가 검색 되기 전에 발생 합니다.

ObjectDataSourceSelectingEventArgs

ObjectDataSourceSelectingEventHandler

Inserting , Updating, and Deleting.

삽입, 업데이트 또는 삭제 작업이 수행 되기 전에 발생 합니다.

ObjectDataSourceMethodEventArgs

ObjectDataSourceMethodEventHandler

Selected .

데이터가 검색 된 후 발생 합니다.

ObjectDataSourceStatusEventArgs

ObjectDataSourceStatusEventHandler

Inserted , Updated, and Deleted.

삽입, 업데이트 또는 삭제 작업이 완료 된 후 발생 합니다.

ObjectDataSourceStatusEventArgs

ObjectDataSourceStatusEventHandler

ObjectDisposing .

비즈니스 개체가 소멸 되기 직전에 발생 합니다.

ObjectDataSourceDisposingEventArgs

ObjectDataSourceDisposingEventHandler

이 섹션에서는 두 가지 코드 예제가 포함 되어 있습니다. 첫 번째 코드 예제에서는 ObjectDataSource 컨트롤에 비즈니스 개체를 사용 하는 DetailsView 데이터를 삽입할 컨트롤. 두 번째 코드 예제에서는 첫 번째 코드 예제에서 사용 되는 중간 계층 비즈니스 개체의 예를 제공 합니다.

다음 코드 예제에서는 ObjectDataSource 컨트롤에 비즈니스 개체를 사용 하는 DetailsView 데이터를 삽입할 컨트롤. DetailsView 처음에 새로운 표시 됩니다 NorthwindEmployee 레코드를 자동으로 생성 된와 함께 삽입 단추. 필드에 데이터를 입력 한 후는 DetailsView , 클릭의 삽입 단추를 하는 InsertMethod 속성이 됩니다 식별 방법을 수행의 Insert 작업.

이 예제는 UpdateEmployeeInfo 메서드; 삽입을 수행 하는 데 사용 그러나 필요는 NorthwindEmployee 매개 변수는 데이터를 삽입할 수 있습니다. 이 따라서 컬렉션의 문자열에 DetailsView 제어 가공 패스가 자동으로 충분 하지 않은. NorthwindEmployeeInserting 대리자가는 ObjectDataSourceMethodEventHandler 를 처리 하는 개체는 Inserting 이벤트 및 입력된 매개 변수를 조작할 수 있습니다는 Insert 작업 진행. 때문에 UpdateEmployeeInfo 방법을 사용 해야는 NorthwindEmployee 개체를 매개 변수로 문자열의 컬렉션을 사용 하 여 만든와 추가 됩니다는 InputParameters 컬렉션입니다.


<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="Samples.AspNet.CS" %>
<%@ Import namespace="Samples.AspNet.CS" %>
<%@ Page language="c#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
private void NorthwindEmployeeInserting(object source, ObjectDataSourceMethodEventArgs e)
{
  // The business object expects a custom type. Build it
  // and add it to the parameters collection.

  IDictionary paramsFromPage = e.InputParameters;

  NorthwindEmployee ne = new NorthwindEmployee();

  ne.FirstName  = paramsFromPage["FirstName"].ToString();
  ne.LastName   = paramsFromPage["LastName"].ToString();
  ne.Title      = paramsFromPage["Title"].ToString();
  ne.Courtesy   = paramsFromPage["Courtesy"].ToString();
  ne.Supervisor = Int32.Parse(paramsFromPage["Supervisor"].ToString());

  paramsFromPage.Clear();
  paramsFromPage.Add("ne", ne);
}

</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
  <head>
    <title>ObjectDataSource - C# Example</title>
  </head>
  <body>
    <form id="Form1" method="post" runat="server">

        <asp:detailsview
          id="DetailsView1"
          runat="server"
          autogenerateinsertbutton="True"
          datasourceid="ObjectDataSource1">
        </asp:detailsview>

        <asp:objectdatasource
          id="ObjectDataSource1"
          runat="server"
          selectmethod="GetEmployee"
          insertmethod="UpdateEmployeeInfo"
          oninserting="NorthwindEmployeeInserting"
          typename="Samples.AspNet.CS.EmployeeLogic"
          >
          <selectparameters>
            <asp:parameter name="anID" defaultvalue="-1" />
          </selectparameters>
        </asp:objectdatasource>

    </form>
  </body>
</html>


다음 코드 예제에서는 이전 코드 예제에서 사용 하는 중간 계층 비즈니스 개체의 예를 제공 합니다. 다음 코드 예제에서는 정의 된 두 개의 주 클래스를입니다.

  • EmployeeLogic 비즈니스 논리를 캡슐화 하는 상태 비저장 클래스인 클래스입니다.

  • NorthwindEmployee 클래스를 로드 하 고 데이터 계층에서 데이터를 유지 하는 데 필요한 기본 기능만 포함 된 모델 클래스입니다.

또한 한 NorthwindDataException 클래스가 편의 제공 됩니다.

이 예제 클래스이 집합은 Microsoft SQL Server 및 Microsoft Access를 사용할 수 있는 예제 데이터베이스를 Northwind Traders 데이터베이스를 사용 합니다. 전체 작업 예제를 보려면 이러한 클래스 응용 프로그램 루트 아래의 App_Code 디렉터리에 넣거나 컴파일한 후 결과 DLL을 Bin 디렉터리에 넣어 사용 합니다. UpdateEmployeeInfo 메서드가 구현 되지 않았습니다 완벽 하 게,이 예제를 시험해 볼 때 데이터를 Northwind Traders 데이터베이스에 삽입할 수 있도록 합니다.


namespace Samples.AspNet.CS {

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web.UI;
using System.Web.UI.WebControls;
  //
  // EmployeeLogic is a stateless business object that encapsulates
  // the operations you can perform on a NorthwindEmployee object.
  //
  public class EmployeeLogic {

    // Returns a collection of NorthwindEmployee objects.
    public static ICollection GetAllEmployees () {
      ArrayList al = new ArrayList();

      ConnectionStringSettings cts = ConfigurationManager.ConnectionStrings["NorthwindConnection"];

      SqlDataSource sds
        = new SqlDataSource(cts.ConnectionString,
                            "SELECT EmployeeID FROM Employees");
      try {
        IEnumerable IDs = sds.Select(DataSourceSelectArguments.Empty);

        // Iterate through the Enumeration and create a
        // NorthwindEmployee object for each ID.
        IEnumerator enumerator = IDs.GetEnumerator();
        while (enumerator.MoveNext()) {
          // The IEnumerable contains DataRowView objects.
          DataRowView row = enumerator.Current as DataRowView;
          string id = row["EmployeeID"].ToString();
          NorthwindEmployee nwe = new NorthwindEmployee(id);
          // Add the NorthwindEmployee object to the collection.
          al.Add(nwe);
        }
      }
      finally {
        // If anything strange happens, clean up.
        sds.Dispose();
      }

      return al;
    }

    public static NorthwindEmployee GetEmployee(object anID) {
      if (anID.Equals("-1") ||
          anID.Equals(DBNull.Value) ) {
        return new NorthwindEmployee();
      }
      else {
        return new NorthwindEmployee(anID);
      }
    }

    public static void UpdateEmployeeInfo(NorthwindEmployee ne) {
      bool retval = ne.Save();
      if (! retval) { throw new NorthwindDataException("UpdateEmployee failed."); }
    }

    public static void DeleteEmployee(NorthwindEmployee ne) {
      bool retval = ne.Delete();
      if (! retval) { throw new NorthwindDataException("DeleteEmployee failed."); }
    }

    // And so on...
  }

  public class NorthwindEmployee {

    public NorthwindEmployee () {
      ID = DBNull.Value;
      lastName = "";
      firstName = "";
      title="";
      titleOfCourtesy = "";
      reportsTo = -1;
    }

    public NorthwindEmployee (object anID) {
      this.ID = anID;

      SqlConnection conn
        = new SqlConnection (ConfigurationManager.ConnectionStrings["NorthwindConnection"].ConnectionString);
      SqlCommand sc =
        new SqlCommand(" SELECT FirstName,LastName,Title,TitleOfCourtesy,ReportsTo " +
                       " FROM Employees " +
                       " WHERE EmployeeID = @empId",
                       conn);
      // Add the employee ID parameter and set its value.
      sc.Parameters.Add(new SqlParameter("@empId",SqlDbType.Int)).Value = Int32.Parse(anID.ToString());
      SqlDataReader sdr = null;

      try {
        conn.Open();
        sdr = sc.ExecuteReader();

        // Only loop once.
        if (sdr != null && sdr.Read()) {
          // The IEnumerable contains DataRowView objects.
          this.firstName        = sdr["FirstName"].ToString();
          this.lastName         = sdr["LastName"].ToString();
          this.title            = sdr["Title"].ToString();
          this.titleOfCourtesy  = sdr["TitleOfCourtesy"].ToString();
          if (! sdr.IsDBNull(4)) {
            this.reportsTo        = sdr.GetInt32(4);
          }
        }
        else {
          throw new NorthwindDataException("Data not loaded for employee id.");
        }
      }
      finally {
        try {
          if (sdr != null) sdr.Close();
          conn.Close();
        }
        catch (SqlException) {
          // Log an event in the Application Event Log.
          throw;
        }
      }
    }

    private object ID;
    public string EmpID {
      get { return ID.ToString();  }
    }

    private string lastName;
    public string LastName {
      get { return lastName; }
      set { lastName = value; }
    }

    private string firstName;
    public string FirstName {
      get { return firstName; }
      set { firstName = value;  }
    }

    public string FullName {
      get { return FirstName + " " + LastName; }
    }

    private string title;
    public String Title {
      get { return title; }
      set { title = value; }
    }

    private string titleOfCourtesy;
    public string Courtesy {
      get { return titleOfCourtesy; }
      set { titleOfCourtesy = value; }
    }

    private int    reportsTo;
    public int Supervisor {
      get { return reportsTo; }
      set { reportsTo = value; }
    }

    public bool Save () {
      // Implement persistence logic.
      return true;
    }

    public bool Delete () {
      // Implement delete logic.
      return true;
    }
  }

  internal class NorthwindDataException: Exception {
    public NorthwindDataException(string msg) : base (msg) { }
  }
}


.NET Framework

4.5, 4, 3.5, 3.0, 2.0에서 지원

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008(서버 코어 역할은 지원되지 않음), Windows Server 2008 R2(서버 코어 역할은 SP1 이상에서 지원, Itanium은 지원되지 않음)

.NET Framework 에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 다음을 참조하십시오. .NET Framework 시스템 요구 사항.
이 형식의 static(Visual Basic의 경우 Shared) 모든 공용 멤버는 스레드로부터 안전합니다. 인터페이스 멤버는 스레드로부터 안전하지 않습니다.
이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.

커뮤니티 추가 항목

추가
표시:
© 2014 Microsoft. All rights reserved.