2011-12-16 4 views
2

사용자가 선택한 색상 및 글꼴 크기를 내 Listview의 LayoutTemplate 컨트롤에 적용 할 수는 있지만 코드 블록을 사용하여 스타일을 조정할 수는 없습니다 (코드 블록은 ItemTemplate에서 잘 작동 함). 코드 블럭이 LayoutTemplate에서 작동하지 않는다는 기사를 읽었습니다. 누구나 안정적으로 스타일을 조정할 수있는 방법이 있습니까? 일부 이벤트 핸들러에서 FindControl()을 사용하고 거기에 스타일을 추가해야합니까?동적으로 ASP.net Listview LayoutTemplate 스타일을 지정하는 방법?

+0

지금까지 어떤 코드를 사용해 보셨습니까 .. ?? – MethodMan

+0

홀수, 짝수, ...와 같은 CSS 선택기를 사용하십시오. –

+0

사람들은 OP가 코드 뒤에서 Eval을 사용하여 cssclass를 변경하려고한다고 생각합니다. – naveen

답변

0

디자인 타임에 고정되지 않은 사용자가 사용자 정의 할 수있는 것은 적절한 컨트롤을 찾아 불행히도 CSS 클래스를 변경하여 ListView에 적용해야합니다. 또는 ListView 내의 요소 클래스를 대상으로하는 CSS를 동적으로 작성하고 CSS 만 사용하여 색을 변경할 수도 있습니다.

편집 : 동적으로 출력 CSS, 같은 LiteralControl 사용을 고려하려면 : 다음 온로드 생각

protected override void OnLoad(EventArgs e) 
{ 
    var profile = GetProfile(); 

    LiteralControl ctl = new LiteralControl(@" 
    <style> 
     .UserStyleA 
     { 
      background-color: " + profile.BackgroundColor + @"; 
      color: " + profile.ForeColor + @"; 
    </style>");   
} 

, 당신은 헤더에 추가 할 수있는, 뭔가 같은 : 그러나

this.Page.Header.Controls.Add(ctl); 

, Page.header 속성에 대한 문서를 읽을 때 스타일 시트를 동적으로 추가하는 좋은 예가 있습니다. 그건 정확히 당신이 필요로하는 것 같다.

http://msdn.microsoft.com/en-us/library/system.web.ui.page.header.aspx

+0

명확해야 함 : CSSClass 속성을 수정하여 스타일을 수정하겠다고 제안 했습니까? 그게 가능한 모든 크기와 색상을 처리하기 위해 엄청난 수의 CSS 클래스 조합이 필요하다는 암시를 불러옵니다. 또한 : 나는 그 속성을 어디에서 수정하겠습니까? – Gio

+0

예, 아니요. 예, CssClass 속성을 통해 클래스의 이름을 지정하십시오. 그러나 아니요, 모든 가능한 CSS 클래스를 정의하지는 않지만 사용자 정의 스타일로 동적으로 CSS를 생성하십시오. –

+0

저는 CSS 클래스를 동적으로 생성하지 않았습니다. ASP.net에서 이것을 수행하는 방법에 대한 모든 포인터 또는 링크? 어떤 시점에서 이러한 변경 사항을 적용합니까? – Gio

0

당신은 LayoutTemplate 내부의 사용자 컨트롤을 배치하고 논리를 이동 시도 할 수에게 말했다 사용자 제어, 이런 식으로 뭔가 :

<asp:ListView ID="CustomizableList" runat="server"> 
    <LayoutTemplate> 
    <custom:UserStyles runat="server" /> 

    <div class="user-list-layout"> 
     <asp:PlaceHolder ID="Item" /> 
    </div> 
    </LayoutTemplate> 
    <ItemTemplate> 
    <asp:Label ID="Something" runat="server" 
     Text='<%# Eval("Something") %>' 
     CssClass="user-list-something" /> 
    </ItemTemplate> 
</asp:ListView> 

브라이언 메인 '대답 만 사용 형태 조언을 따라 CSS 클래스. 그런 다음 UserStyles 컨트롤에서 적용 할 CSS를 동적으로 생성 할 수 있습니다.

<style type="text/css" scoped> 
    .user-list-layout { 
    border-color: <%= Profile.FavoriteColor %>; 
    } 
    .user-list-something { 
    font-size: <%= Profile.PreferredFontSizeForSomething %>; 
    } 
</style> 

<body><style> 태그를 추가하는 것은 HTML에서 허용하지만, 모든 주요 브라우저에서 작동되지 않고 있다는 점 유의하시기 바랍니다. HTML5에서는 허용되지만 scoped 속성 집합 만 있습니다 (자세한 내용은 this question 참조).

관련 문제