ASP.NET 에서 ObjectDataSource 컨트롤 의 DataObjectTypeName 속성

1.ObjectDataSource 컨트롤 설명
특정한 종류의 이름 을 가 져 오 거나 설정 합 니 다.ObjectDataSource 컨트롤 은 데이터 바 인 딩 컨트롤 에서 개별 값 을 전달 하 는 것 이 아니 라 데이터 작업 의 인 자 를 업데이트,삽입 또는 삭제 하 는 데 사 용 됩 니 다.
Update,Insert,Delete 방법 에 전 달 될 여러 개의 인 자 를 지정 하지 않 고 여러 개의 데이터 필드 값 을 누적 하 는 대상 을 만 들 수 있 습 니 다.여러 개의 인자 가 아 닌 방법 으로 만 이 대상 을 전달 합 니 다.
데이터 바 인 딩 컨트롤 에 연 결 된 ObjectDataSource 컨트롤 의 기본 동작 은 데이터 바 인 딩 컨트롤 이 데이터 원본 의 모든 매개 변수 에 Parameter 대상 을 만 드 는 것 입 니 다.업무 대상 에 필드 가 많 으 면 결과 방법 도 필드 가 많다.DataObject TypeName 속성 은 모든 데이터 필드 에 속성 이 있 는 종 류 를 지정 할 수 있 습 니 다.이렇게 하면 실행 할 때 방법 에 여러 개의 파 라 메 터 를 전달 하 는 것 이 아니 라 대상 을 만 들 고 모든 속성 을 설정 합 니 다.이 대상 은 호출 된 매개 변수 집합 에 추 가 됩 니 다.
2.DataObject TypeName 속성의 사용
DataObject TypeName 속성 이 지정 한 형식 은 Object DataSource 컨트롤 이 이 유형의 인 스 턴 스 를 만 들 수 있 도록 인자 가 없 는 기본 구조 함수 가 있어 야 합 니 다.이 형식 은 ObjectDataSource 컨트롤 이 데이터 바 인 딩 컨트롤 로 전달 하 는 값 으로 대상 을 채 울 수 있 도록 설정 가능 한 속성 이 있어 야 합 니 다.ObjectDataSource 컨트롤 의 속성 명 은 데이터 바 인 딩 컨트롤 이 전달 하 는 값 의 매개 변수 이름과 완전히 일치 해 야 합 니 다.
DataObjectTypeName 속성 을 설정 하고 ObjectDataSource 컨트롤 이 데이터 바 인 딩 컨트롤 과 연 결 될 때 InsertMethod 와 DeleteMethod 속성 이 지정 한 방법 은 DataObjectTypeName 속성 에서 지정 한 형식의 매개 변 수 를 각각 가 져 야 합 니 다.ConflictDetection 속성 이 OverwriteChanges 값 으로 설정 되면 UpdateMethod 속성 이 지정 한 방법 은 DataObject TypeName 속성 에서 지정 한 형식의 인자 가 있어 야 합 니 다.ConflictDetection 속성 이 CompareAllValues 값 으로 설정 되면 UpdateMethod 속성 이 지정 한 방법 은 DataObject TypeName 속성 에서 지정 한 두 개의 인자 가 있어 야 합 니 다.첫 번 째 매개 변 수 는 원시 값 을 포함 합 니 다.두 번 째 매개 변 수 는 새 값 을 포함 합 니 다.
DataObjectTypeName 속성 은 ObjectDataSource 컨트롤 과 연 결 된 ObjectDataSourceView 의 DataObjectTypeName 속성 에 위탁 합 니 다.
3.예시 코드
다음 코드 예제 에 서 는 DataObject TypeName 속성 을 사용 하 는 방법 을 보 여 줍 니 다.모든 매개 변수 값 을 대상 으로 합 치 는 형식 을 보 여 줍 니 다.Aggregatedata 클래스 의 선택 방법 은 Name 과 Number 라 는 열 이 있 는 DataTable 대상 을 되 돌려 줍 니 다.마찬가지 로 뉴 데이터 클래스 는 두 개의 읽 기/쓰기 속성 Name 과 Number 를 정의 합 니 다.Aggregatedata 류 의 Insert 방법 은 뉴 데이터 형식의 인 자 를 가지 고 있 습 니 다.ObjectDataSource 의 TypeName 속성 은 AggregatData 로,DataObjectTypeName 속성 은 NewData 로 설정 합 니 다.
프론트 코드:

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS" Assembly="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">

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>ObjectDataSource - DataObjectTypeName Property Example</title>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <asp:DetailsView 
      ID="DetailsView1" 
      runat="server" 
      AllowPaging="True" 
      AutoGenerateInsertButton="True"
      DataSourceID="ObjectDataSource1" 
      Height="50px" 
      Width="125px">
    </asp:DetailsView>
    <asp:ObjectDataSource 
      ID="ObjectDataSource1" 
      runat="server" 
      DataObjectTypeName="Samples.AspNet.CS.NewData"
      InsertMethod="Insert" 
      SelectMethod="Select" 
      TypeName="Samples.AspNet.CS.AggregateData">
    </asp:ObjectDataSource>
  </div>
  </form>
</body>
</html>
배경 코드:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace Samples.AspNet.CS
{

  /// <summary>
  /// Summary description for AggregateData
  /// </summary>
  public class AggregateData
  {

    public AggregateData()
    {

    }

    static DataTable table;

    private DataTable CreateData()
    {
      table = new DataTable();
      table.Columns.Add("Name", typeof(string));
      table.Columns.Add("Number", typeof(int));
      table.Rows.Add(new object[] { "one", 1 });
      table.Rows.Add(new object[] { "two", 2 });
      table.Rows.Add(new object[] { "three", 3 });
      return table;
    }

    public DataTable Select()
    {
      if (table == null)
      {
        return CreateData();
      }
      else
      {
        return table;
      }
    }

    public int Insert(NewData newRecord)
    {
      table.Rows.Add(new object[] { newRecord.Name, newRecord.Number });
      return 1;
    }
  }

  public class NewData
  {
    private string nameValue;
    private int numberValue;

    public string Name
    {
      get { return nameValue; }
      set { nameValue = value; }
    }

    public int Number
    {
      get { return numberValue; }
      set { numberValue = value; }
    }

  }
}

좋은 웹페이지 즐겨찾기