2010-01-19 7 views
0

asp.net listview가 있습니다. 그것을 채우는 데이터는 그룹으로 정렬되며 목록보기 항목 템플리트에서 코드를 사용합니다. 기본적으로 그룹화 필드가 데이터에서 변경되었는지 점검하고, 그렇다면 표제와 함께 새로운 행을 인쇄합니다. 다음과 같이 보입니다.컨트롤을 목록보기에 동적으로 추가하십시오.

<ItemTemplate> 
<%# AddGroupingRowIfWPHasChanged() %> 

    <tr id="row" class="GridViewRow" runat="server" > 
    <td valign="top" align="left" ><%# Eval("item1") %></td> 
....... 
</itemTemplate> 

위대한 작품입니다. 그러나 이제 그룹 머리글 필드에 단추를 추가해야하는데이 기능을 사용할 수없는 것 같습니다. Oboboulsy이 버튼은 제목이 변경되었지만 AddGroupingRowIfWPHasChanged() 메서드가 현재 ListviewItem에 액세스하지 못하는 것 같아 컨트롤을 추가 할 수 없습니다.

동적으로 목록보기에 컨트롤을 추가 할 수있는 방법에 대한 제안 사항, 해당 그룹의 제목 여부에 대한 의견이 있으십니까?

답변

1

자리 표시자를 사용 하시겠습니까?

에서 .aspx

<asp:Placeholder id="plhControlHolder" runat="server" /> 

코드 숨김

' ** use FindControl if instead a databound event, otherwise you could skip. 
Dim plcControlHolder as PlaceHolder = e.Row.FindControl("plcControlHolder") 
Dim btnDynamic As New Button 
btnDynamic.Id = "MyButton" 
plcControlHolder.Controls.Add(btnDynamic) 
0

거기에서 그것을 할 수 있습니다 ItemTemplate에이 모든 것을 적용하려고 시도하는 대신에.

+0

불행히도 이것은 그룹 템플릿을 사용할 수 없습니다. 이것은 그룹당 행 수를 기준으로 그룹을 분리하고, 그룹은 SQL 데이터를 기반으로하며, 그룹은 다양한 행 수가 있습니다. –

0

AddGroupingRowIfWPHasChanged() 메서드 호출 대신 포함 할 UserControl을 만듭니다. 렌더링()을 재정의합니다. 그룹이 변경된 경우 컨트롤을 렌더링하려면 현재 AddGroupingRowIfWPHasChanged()에있는 논리를 사용하십시오. 그렇지 않으면 빈 문자열을 렌더링하십시오.

관련 문제