런타임에 DataList 항목 사용자 지정

    protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {

  //항목구분해줘야 하네... e.Item.ItemType == ListItemType.Item 만하니깐 한다리건너 나오고 나오고 한다 ㅋㅋㅋ

        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            System.Data.DataRowView drv = (System.Data.DataRowView)(e.Item.DataItem);
            Response.Write(drv.Row["member_id"].ToString() + "<br>");
        }

    }

간단하게 설명해서 게시판 리스트가 쭈욱 나오는데 아이디를 비교해서 삭제 버튼을 보여줄 필요가 있따  그때 각행을 돌때 아이디를 비교 해서 작업을 처리할수 있따

 

 

페이지를 처리하는 동안 DataList 컨트롤은 페이지에 렌더링할 개별 항목을 만듭니다. 항목이 만들어질 때 이를 사용자 지정할 수 있도록 DataList 컨트롤은 다음과 같은 두 개의 이벤트를 발생시킵니다.

  • ItemCreated 이벤트는 DataList 컨트롤이 각 항목, 교대로 반복되는 항목, 머리글, 바닥글 등을 만들 때 발생됩니다.

  • ItemDataBound 이벤트는 항목의 컨트롤이 데이터 바인딩된 다음에 발생됩니다. 이벤트 매개 변수를 사용하여 데이터 바인딩에 사용되는 데이터에 액세스할 수 있습니다. 데이터에 따라 사용자 지정하는 경우 이 이벤트를 사용합니다.

이러한 이벤트에 대한 응답으로 항목을 변경할 수 있습니다. 흔한 예로, 항목에 표시되는 데이터에 따라 항목의 모양을 변경할 수 있습니다. 예를 들어 데이터베이스에서 읽은 숫자 값이 음수이면 항목의 배경색을 빨강으로 설정합니다.

ItemCreated 이벤트를 사용하여 런타임에 항목을 사용자 지정하려면

  1. DataList 컨트롤의 ItemCreated 이벤트에 대한 이벤트 처리기를 만듭니다.

  2. 이벤트 처리기에서 Item 개체를 사용하여 e 이벤트 인수 개체에서 현재 항목을 가져옵니다. 현재 항목의 인덱스는 Item 개체의 ItemIndex 속성을 통해 사용할 수 있으며 해당 형식은 ItemType 속성(ListItemType 열거형을 사용하여 정의됨)을 통해 사용할 수 있습니다.

    참고

    ItemIndex 속성은 Item, AlternatingItem 및 SelectedItem 개체에 대해서만 양수 값을 반환합니다. 머리글, 바닥글, 구분 기호 항목의 인덱스 값은 -1입니다.

    다음 예제에서는 항목의 배경색을 조건에 따라 수정할 수 있는 방법을 보여 줍니다. 이 예제에서는 ItemType 속성과 ListItemType 열거형을 사용하여 항목의 배경색을 설정합니다. 항목은 LightGoldenrodYellow로, 교대로 반복되는 항목은 DarkGoldenrod로, 선택한 항목은 Yellow로 각각 설정됩니다.

protected void DataList1_ItemCreated(object sender, 
    EventArgs e)
{
   switch (e.Item.ItemType)
   {
      case ListItemType.Item :
         e.Item.BackColor = 
             System.Drawing.Color.LightGoldenrodYellow;
         break;
      case ListItemType.AlternatingItem :
         e.Item.BackColor = System.Drawing.Color.DarkGoldenrod;
         break;
      case ListItemType.SelectedItem :
         e.Item.BackColor = System.Drawing.Color.Yellow;
         break;
      default :
         // Add code here to handle the header, footer, and 
         // separator templates.
         break;
      }
}

ItemCreated 이벤트가 발생된 당시에는 템플릿의 개별 컨트롤이 아직 데이터에 바인딩되어 있지 않지만 ItemDataBound 이벤트에서 데이터를 사용할 수 있습니다.

ItemDataBound 이벤트를 사용하여 런타임에 항목을 사용자 지정하려면

DataList 컨트롤의 ItemDataBound 이벤트에 대한 이벤트 처리기를 만듭니다.

이벤트 처리기에서 머리글 또는 바닥글이 아닌 Item, AlternatingItem 또는 EditItem으로 작업 중인지 테스트하십시오.

DataItem 속성을 사용하여 컨트롤에 바인딩될 데이터를 테스트하고 이를 비교 기준으로 사용합니다.

다음 예제에서는 데이터를 바탕으로 하는 조건적 테스트 방법을 보여 줍니다. 예제에서는 이벤트 인수의 DataItem 속성을 DataRowView 개체로 캐스팅합니다. 그런 다음 현재 DataItem에서 Quantity라는 필드를 추출합니다. Quantity가 10보다 작으면 DataList 컨트롤의 항목이 빨강으로 설정됩니다.

protected void DataList1_ItemDataBound(object sender, 
        DataListItemEventArgs e)
{
   if(e.Item.ItemType == ListItemType.Item || 
          e.Item.ItemType == ListItemType.AlternatingItem)
   {
       System.Data.DataRowView drv = 
           (System.Data.DataRowView)(e.Item.DataItem);
       int quantity = int.Parse(drv.Row["Quantity"].ToString());
       if (quantity < 10)
       {
          e.Item.BackColor = Color.Red;
       }
    }
}

또 다른 예제) 컨트롤에 맞게 dataList 안에있는 컨트롤에 값을 전달하기

protected void DataListLoveletter_ItemDataBound(object sender, DataListItemEventArgs e)
    {

        System.Data.DataRowView drv = (System.Data.DataRowView)(e.Item.DataItem);
        //하이퍼링크 컨트롤에 제목넣기
        Control c = e.Item.FindControl("HyperLinkTitle");
        if (c != null) {
            ((HyperLink)c).Text = drv["title"].ToString()         

         }

}

+ Recent posts