DetailPage-MSS-KB

기술 자료

기술 자료: 307860 - 마지막 검토: 2012년 10월 15일 월요일 - 수정: 1.0

 
이 문서는 이전에 다음 ID로 출판되었음: KR307860
이 문서에서는 다음과 같은 Microsoft.net을 말합니다. Framework 클래스 라이브러리 네임 스페이스:
  • System.Data
  • System.Data.SqlClient

이 페이지에서

요약

이 문서에서는 ASP.NET 데이터 소개 바인딩입니다.

추가로 ASP.NET 개요에는 다음을 참조 하십시오 Microsoft 기술 자료의 다음 문서를 참조 하십시오.
305140  (http://support.microsoft.com/kb/305140/ ) ASP.NET 로드맵

추가 정보

ASP.NET 데이터 바인딩 서버 컨트롤을 바인딩할 수 있습니다. 간단한 속성, 컬렉션, 식 및/또는 메서드를. 사용 하는 경우 데이터 바인딩 데이터베이스에서에서 데이터를 사용 하면 보다 유연 하 게가 나 다른 것을 의미 합니다.

이 문서에서는 다음과 같은 데이터 바인딩 해결 주제:

데이터 바인딩 기본

< % # %> 구문

ASP.NET는 새로운 선언적 구문, < % # % &gt;를 소개합니다. 이 구문은.aspx 페이지에서 데이터 바인딩을 사용 하는 기준으로 합니다. 모든 데이터 바인딩 식 내에서 이러한 문자가 포함 되어야 합니다. 다음 목록 여러 원본 으로부터의 간단한 데이터 바인딩 예제가 수록 되어 있습니다.
  • 간단한 속성 (고객을 나타내는 구문):
    <%# custID %>
    					
  • 컬렉션 (주문 나타내는 구문):
    <asp:ListBox id="List1" datasource='<%# myArray %>' runat="server">
    					
  • 식 (연락처를 나타내는 구문):
    <%# ( customer.First Name + " " + customer.LastName ) %>
    					
  • 메서드 결과 (미지불 구문):
    <%# GetBalance(custID) %>
    					
앞의 예제에서 인라인 < % # %> 태그 특정 데이터 원본에서 정보를 배치할 수 있는 위치를 나타냅니다 .aspx 페이지입니다. TextBox 웹 서버 컨트롤 데이터 바인딩 예제를 사용합니다.
<asp:textbox id=txt text="<%# custID %>" runat=server />
				
다음과 같은.NET 데이터 바인딩 구문에 대 한 자세한 내용은 참조 하십시오. Framework 소프트웨어 개발 키트 (SDK) 설명서:
데이터 바인딩 식 구문
http://msdn2.microsoft.com/en-us/library/bda9bbfx (vs.71).aspx (http://msdn2.microsoft.com/en-us/library/bda9bbfx(vs.71).aspx)

Control.databind()와 Page.DataBind()

특정 데이터 소스를 결정 하 고 설정 후 .aspx 페이지에 있는 개체에 대해 이러한 데이터에 데이터를 바인딩해야 합니다. 원본입니다. Page.DataBind 또는 Control.DataBind 메서드가 데이터 소스에 데이터 바인딩하는 데 사용할 수 있습니다.

둘 다 메서드 모두 비슷하게 작동 합니다. 주된 차이점은 모든 데이터 소스에 바인딩된 것입니다. Page.DataBind 후 해당 서버 컨트롤에 메서드가 호출 됩니다. 데이터 없음 때까지 컨트롤에 렌더링 어느 DataBind 메서드 호출 될 때까지 나의 웹 서버 컨트롤을 명시적으로 호출 된 페이지 수준 Page.DataBind 메서드가 있습니다. 일반적으로 Page.DataBind (또는 DataBind) Page_Load 이벤트에서 호출 됩니다.

DataBind 메서드에 대 한 자세한 내용은 다음.NET Framework SDK 설명서를 참조 하십시오. Control.DataBind 메서드
http://msdn.microsoft.com/en-us/library/w5e5992d.aspx (http://msdn.microsoft.com/en-us/library/w5e5992d.aspx)

데이터 바인딩된 목록 컨트롤

목록 컨트롤에 바인딩할 수 있는 특수 웹 서버 컨트롤입니다. 컬렉션에 있습니다. 이러한 컨트롤 사용 하 여 데이터의 행을 표시 하는 사용자 지정된 템플릿 형식입니다. DataSourceDataMember 속성을 컬렉션에 바인딩하는 데 사용 되는 모든 목록 컨트롤을 노출 합니다.

이러한 컨트롤의 DataSource 속성 IEnumerable, ICollection또는 IListSource 인터페이스를 지 원하는 모든 컬렉션에 바인딩할 수 있습니다.

Repeater 컨트롤

Repeater 컨트롤 템플릿, 데이터 바인딩된 목록입니다. Repeater 컨트롤 "lookless;"입니다. 즉, 모든 내장 없는 레이아웃 또는 스타일입니다. 따라서 모든 HTML의 레이아웃을 명시적으로 선언 해야, 서식 및 스타일 태그에서 컨트롤의 템플릿.

다음 코드 예제는 list 컨트롤 중 하나인 Repeater 컨트롤을 사용 하 여 데이터를 표시 하는 수 보여줍니다.

참고: 연결 문자열의 매개 변수를 수정 해야 사용자 환경에 대 한 필요 합니다.

.NET Visual Basic
<%@ Page Language="vb" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server">
Sub Page_Load(sender As Object, e As EventArgs)

   Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _
                                                "database=pubs;Integrated Security=SSPI")
   Dim cmd As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)
   Dim ds As DataSet = New DataSet()
   cmd.Fill(ds)
   Repeater1.DataSource = ds
   Repeater1.DataBind()

End Sub
</script>
<html>
<body>
   <form id="Form1" method="post" runat="server">
      <asp:Repeater id="Repeater1" runat="server">
         <ItemTemplate>
         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>
	 </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
				
Visual C#.NET
<%@ Page language="c#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

<script runat="server">
void Page_Load(Object sender, EventArgs e) 
{ 
   SqlConnection cnn = new 
       SqlConnection("server=(local);database=pubs;Integrated Security=SSPI"); 
   SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
   DataSet ds = new DataSet(); 
   da.Fill(ds, "authors"); 
   Repeater1.DataSource = ds.Tables["authors"];
   Repeater1.DataBind();
}
</script>
<html>
<body>
   <form id="WebForm2" method="post" runat="server">
      <asp:Repeater id="Repeater1" runat="server">
         <ItemTemplate>
         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>
    	 </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
				
Visual J#.NET
<%@ Page language="VJ#" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.SqlClient" %>

 <script runat="server">
void Page_Load(Object sender, EventArgs e) 
{ 
    SqlConnection cnn = new SqlConnection("server=(local);database=pubs;Integrated
         Security=SSPI"); 
    SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
    DataSet ds = new DataSet(); 
    da.Fill(ds, "authors"); 
    DataTableCollection dtc = ds.get_Tables();
    int index = dtc.IndexOf("authors");
    Repeater1.set_DataSource(dtc.get_Item(index));
    Repeater1.DataBind();
}
</script>
<html>
<body>
   <form id="WebForm2" method="post" runat="server">
      <asp:Repeater id="Repeater1" runat="server">
         <ItemTemplate>
         <%# DataBinder.Eval(Container.DataItem,"au_id") %><br>
             </ItemTemplate>
      </asp:Repeater>
   </form>
</body>
</html>
				
Repeater 컨트롤에 대 한 자세한 내용은 다음.NET Framework SDK 설명서를 참조 하십시오.
Repeater 웹 서버 컨트롤
http://msdn.microsoft.com/en-us/library/x8f2zez5.aspx (http://msdn.microsoft.com/en-us/library/x8f2zez5.aspx)

DataList 컨트롤

DataList 클래스는 다양 한 기능, 템플릿, 데이터 바인딩된 목록입니다. 할 수 있습니다. 이 컨트롤을 사용자 지정 하 여 템플릿을 수정 합니다. Repeater 컨트롤과 달리 DataList 방향 렌더링을 지원 하 고 선택적으로 렌더링할 수 있는 런타임에 HTML 테이블입니다.

DataList 컨트롤에 대 한 자세한 내용은 다음.NET Framework SDK 설명서를 참조 하십시오.
DataList 웹 서버 컨트롤
http://msdn.microsoft.com/en-us/library/9cx2f3ks (VS.85).aspx (http://msdn.microsoft.com/en-us/library/9cx2f3ks(VS.85).aspx)

DataGrid 컨트롤

DataGrid 컨트롤의 모든 기능을 갖춘, 여러 열, 데이터 바인딩된 모눈입니다. 하 레이아웃의 개별 열은 DataGrid에서 사용자 지정, 열 유형을 "템플릿"을 설정 하 고 수정할 수 있는 열의 템플릿을 합니다. DataGrid 컨트롤은 템플릿 없이 렌더링할 수는 있기 때문에이 컨트롤 보고 시나리오에 이상적입니다. DataGrid 또한 선택, 편집, 삭제, 페이징 및 정렬을 지원합니다 열과 단추 열 단위로 합니다.

DataGrid 컨트롤에 대 한 자세한 내용은 다음.NET Framework SDK 설명서를 참조 하십시오.
DataGrid 웹 서버 컨트롤
http://msdn.microsoft.com/en-us/library/aa710742 (VS.71).aspx (http://msdn.microsoft.com/en-us/library/aa710742(VS.71).aspx)

데이터 액세스

이 섹션에서는 데이터베이스의 데이터에 액세스 하는 방법을 설명 하 고 데이터 목록 컨트롤에 바인딩하십시오. DataSet 또는 DataReader 클래스를 사용 하는 데이터베이스에서 데이터를 가져올 수 있습니다.

데이터 집합 클래스

데이터 집합 의 데이터 테이블을 포함 하 여, 완전 한 모습 포함 구조, 테이블 및 데이터 순서 사이의 관계. DataSet 클래스 모든 종류의 정보를 저장할 수 있는 융통성이 있습니다. 확장 가능한 태그 언어 (XML) 파일을 데이터베이스. DataSet 클래스는 상태 비저장입니다. 즉, 이러한 클래스를 전달할 수 있습니다. 클라이언트-서버 연결 리소스를 서로 연결 하지 않고 서버. 다음 코드는 데이터 집합 을 사용 하 여 컨트롤에 데이터를 바인딩하는 방법을 보여 줍니다.

참고: 연결 문자열의 매개 변수를 수정 해야 사용자 환경에 대 한 필요 합니다.

.NET Visual Basic
Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _
                                             "database=pubs;Integrated Security=SSPI")
Dim cmd As SqlDataAdapter = New SqlDataAdapter("select * from authors", cnn)
Dim ds As DataSet = New DataSet()
cmd.Fill(ds)
MyRepeater.DataSource = ds
MyRepeater.DataBind() 
				
Visual C#.NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI"); 
SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
DataSet ds = new DataSet(); 
da.Fill(ds);
MyRepeater.DataSource = ds;
MyRepeater.DataBind(); 
				
Visual J#.NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI"); 
SqlDataAdapter da = new SqlDataAdapter("select * from authors", cnn); 
DataSet ds = new DataSet(); 
da.Fill(ds); 
MyRepeater.set_DataSource(ds);
MyRepeater.DataBind();
				
DataSet 클래스에 대 한 자세한 내용은 다음.NET Framework SDK 설명서를 참조 하십시오.
데이터 집합 클래스
http://msdn2.microsoft.com/en-us/library/system.data.dataset (vs.71).aspx (http://msdn2.microsoft.com/en-us/library/system.data.dataset(vs.71).aspx)

DataReader 클래스

반대로, 표시 및 변경 하는 데이터만 해야 하는 경우 렌더링 되는, DataReader 클래스는 보다 나은 솔루션이 될 수 있습니다. 예를 들어, 사용 하는 것이 더 좋습니다. DropDownListDataReaderDataReader 는 데이터를 앞 으로만 이동 가능한 커서 이기 때문에 제어 합니다. 다음 코드를 보여 줍니다. SqlDataReader 클래스를 사용 하 여 컨트롤에 데이터를 바인딩하려면 방법:

.NET Visual Basic
Dim cnn As SqlConnection = New SqlConnection("server=(local);" & _
                                             "database=pubs;Integrated Security=SSPI")
Dim cmd As SqlCommand = New SqlCommand("select * from authors", cnn)

cnn.Open()
MyRepeater.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection)
MyRepeater.DataBind()
				
Visual C#.NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI");
SqlCommand cmd = new SqlCommand("select * from authors", cnn);

cnn.Open();
MyRepeater.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection);
MyRepeater.DataBind();
				
Visual J#.NET
SqlConnection cnn = new SqlConnection("server=(local);
                                       database=pubs;Integrated Security=SSPI"); 

SqlCommand cmd = new SqlCommand("select * from authors", cnn); 

cnn.Open();
MyRepeater.set_DataSource(cmd.ExecuteReader(CommandBehavior.CloseConnection));
MyRepeater.DataBind();
				
SqlDataReader 클래스와 데이터 액세스 ASP.NET에 대 한 자세한 내용은 다음 항목을 참조 하십시오. .NET Framework SDK 설명서:
SqlDataReader 클래스
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx)

고성능 ASP.NET 응용 프로그램 개발
http://msdn2.microsoft.com/en-us/library/5dws599a (vs.71).aspx (http://msdn2.microsoft.com/en-us/library/5dws599a(vs.71).aspx)

바인딩 목록 컨트롤 템플릿

바인딩할 목록 컨트롤 및 서식 파일을 사용할 수 있습니다. 데이터 소스의 개별 레코드를 사용자 지정 합니다. 이 섹션에서는 세 포함 되어 있습니다. 이 작업을 수행 하는 메서드.

DataBinder.Eval 메서드

반환 되는 데이터와 데이터 소스 작동 때에 데이터베이스에 데이터 원본이 여러 가지 정보를 포함할 수 있습니다. 할 수 있습니다. 데이터를 반환할 제네릭 DataBinder.Eval 메서드를 사용 합니다. 다음 코드 예제에서 "au_id" 컨테이너 개체의 데이터 원본에서 필드를 반환 합니다.
<%# DataBinder.Eval(Container.DataItem,"au_id") %>
				
DataBinder.Eval 메서드에 대 한 자세한 내용은 다음.NET Framework SDK 설명서를 참조 하십시오.
DataBinder.Eval 메서드
http://msdn.microsoft.com/en-us/library/4hx47hfe.aspx (http://msdn.microsoft.com/en-us/library/4hx47hfe.aspx)

명시적 캐스팅

더 많은 컨트롤이 필요 하면 명시적 캐스팅을 사용 합니다. 명시적 변환은 형식 변환 키워드를 사용합니다. 이러한 키워드는 함수로 동작 하지만 컴파일러는 코드 인라인을 생성합니다. 따라서 실행이 약간 빠릅니다. 함수를 호출 하는 것입니다. 다음 코드 예제는 명시적 캐스팅을 사용:

.NET Visual Basic
' DataTable as the DataSource
<%# CType(Container.DataItem, System.Data.DataRowView)("au_id") %>

' DataReader as the DataSource
<%# CType(Container.DataItem, System.Data.Common.DbDataRecord)("au_id") %>

' DataReader as the DataSource
<%# CType(Container.DataItem, System.Data.Common.DbDataRecord)(0) %>
				
Visual C#.NET
// DataTable as the DataSource
<%# ((System.Data.DataRowView)Container.DataItem)["au_id"] %> 

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)["au_id"] %>

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)[0] %>
				
Visual J#.NET
// DataTable as the DataSource
<%# ((System.Data.DataRowView)Container.DataItem)["au_id"] %> 

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)["au_id"] %>

// DataReader as the DataSource
<%# ((System.Data.Common.DbDataRecord)Container.DataItem)[0] %>
				
참고 앞의 사용은 DataSet또는 DataReader 의 데이터 소스로 하위 집합인 DataTable을 샘플링 한다는.

ItemDataBound 이벤트

또한 데이터를 바인딩할 수 컨트롤의 ItemDataBound 이벤트를 사용할 수 있습니다. 이 이벤트가 발생 하는 경우는 항목이 컨트롤에 바인딩된 데이터입니다. 다음 HTML 코드 예제에서는 Repeater 컨트롤에 ItemTemplate을 정의합니다.
<asp:repeater id=rptr runat=server>
   <itemtemplate>
      <asp:label id=lblAuthorID runat=server />
   </itemtemplate>
</asp:repeater>
				
다음 메서드를 페이지에 필요 합니다.

.NET Visual Basic
public Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
  
   'TODO: Retrieve data from a database,
   'and bind the data to a list control.

End Sub

public Sub rptr_OnItemDataBound(ByVal sender As Object, _
ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles rptr.ItemDataBound
   Dim rec As DataRowView
   rec = e.Item.DataItem

   'Make sure that you have the data.
   If Not IsDBNull(rec) Then
      Dim l1 As Label
      l1 = e.Item.FindControl("lblAuthorID")
      l1.Text = rec("au_id").ToString()
   End If
End Sub
				
Visual C#.NET
public void Page_Init(object sender, System.EventArgs e)
{
   rptr.ItemDataBound += new RepeaterItemEventHandler(rptr_OnItemDataBound);
}
public void Page_Load(object sender, System.EventArgs e)
{
   // TODO: Retrieve data from a database,
   // and bind the data to a list control.
}
public void rptr_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
   System.Data.Common.DbDataRecord rec = (System.Data.Common.DbDataRecord)
                                          e.Item.DataItem;
   if(rec!=null) //Make sure that you have the data.
   {
      Label l1 = (Label)e.Item.FindControl("lblAuthorID");
      l1.Text = rec["au_id"].ToString();
   }
}
				
Visual J#.NET
public void Page_Init(Object sender, System.EventArgs e)
{
            rptr.add_ItemDataBound(new RepeaterItemEventHandler(rptr_OnItemDataBound));
}
private void Page_Load(Object sender, System.EventArgs e)
{
            // TODO: Retrieve data from a database,
            // and bind the data to a list control.
}
public void rptr_OnItemDataBound(Object sender, RepeaterItemEventArgs e)
{
            System.Data.Common.DbDataRecord rec = (System.Data.Common.DbDataRecord)
                                                   e.get_Item().get_DataItem();
            if (rec != null) //Make sure that you have the data.
            {
                        Label l1 = (Label)e.get_Item().FindControl("lblAuthorID");
                        l1.set_Text(((rec.get_Item("au_id")).ToString()));
            }
}
				

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ASP.NET 1.0
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual J# .NET 2003 Standard Edition
  • Microsoft ASP.NET 1.1
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
키워드: 
kbarttyperoadmap kbdatabinding kbinfo kbservercontrols kbmt KB307860 KbMtko
기계 번역된 문서기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
이 문서의 영문 버전 보기:307860  (http://support.microsoft.com/kb/307860/en-us/ )
공유
추가 지원 옵션
Microsoft Community 지원 포럼
직접 문의하기
Microsoft Certified Partner 찾기
Microsoft Store
소기업이 아닙니까?
다음에서 팔로우하십시오.