Repeater, DataList, DataGrid, ListBox, CheckBoxList, RadioButtonList 같은 다중 레코드 컨트롤은 여러 데이터 항목을 포함하는 데이터 소스에 바인딩됩니다. 예를 들어, DataGrid 컨트롤을 데이터 집합의 테이블에 바인딩하면 컨트롤에서 데이터를 직접 표시할 수 있습니다. 또는 DataList 또는 Repeater 컨트롤을 데이터 집합의 테이블에 바인딩하면 컨트롤에서는 그 테이블을 자식 컨트롤에서 사용하도록 할 수 있습니다.

 

다중 레코드 컨트롤을 바인딩하려면

  1. 컨트롤의 DataSource 속성을 바인딩할 데이터 항목을 포함하는 개체로 설정합니다.

    컨테이너 개체에서 IEnumerable 인터페이스를 구현해야 합니다. 컨테이너 개체로는 다음과 같은 것이 있습니다.

    • ArrayList 개체
    • 컬렉션
    • 데이터 판독기(OleDbDataReader SqlDataReader 형식의 개체)
    • DataView 개체
    • DataRow 개체
    • 데이터 집합에 있는 DataTable 개체

  2. 데이터 소스가 데이터 집합이면 DataMember 속성을 바인딩할 테이블의 이름으로 설정합니다. 이 속성을 설정하지 않으면 기본적으로 데이터 집합의 첫 번째 테이블이 사용됩니다.

  3. DataList 또는 DataGrid 컨트롤을 사용하는 경우에는 런타임에 개별 항목을 식별하기 위해 사용할 수 있는 열의 이름으로 DataKeyField 속성을 설정합니다. 데이터 소스의 기본 키 열을 사용할 수 있는 경우에는 대개 이를 사용합니다.

  4. ListBox, DropDownList, CheckBoxList, RadioButtonList 또는 HtmlSelect 컨트롤을 사용할 경우에는 DataTextField 속성을 컨트롤에 표시할 데이터 열의 이름으로 설정합니다.

  5. 선택적으로, DataValueField 속성을 설정하여 사용자가 항목을 선택할 때 컨트롤에서 값으로 반환할 열의 이름을 지정합니다.

  6. 컨트롤 또는 페이지의 DataBind 메서드를 호출하는 코드를 Web Forms 페이지에 추가합니다.

다음 예제에서는 DataCommand 개체를 사용하여 SQL 문을 실행할 때 반환되는 데이터에 ListBox 컨트롤을 바인딩하는 방법을 보여 줍니다. 명령 개체의 ExecuteReader 메서드에서는 ListBox 컨트롤을 직접 바인딩할 수 있는 데이터 판독기 개체(이 경우에는 SqlDataReader 형식)를 반환합니다.

 

// C#
private void Page_Load(object sender, System.EventArgs e)
{
   if (! this.IsPostBack)
   {
      sqlConnection1.Open();
      sqlCommand1.CommandText = "Select au_id, au_lname from authors";
      ListBox1.DataSource = sqlCommand1.ExecuteReader();
      ListBox1.DataTextField = "au_lname";
      ListBox1.DataValueField = "au_id";
      ListBox1.DataBind();
      sqlConnection1.Close();
   }
}

 

자료출처 : ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.1042/vbcon/html/vbtskexecutingdatacommandthatreturnsresultset.htm

+ Recent posts