2009-12-30 3 views
3

CSS는 여러 클래스 이름을 지원합니다.ASP.NET 테마를 사용하여 컨트롤에 여러 cssclass 이름을 설정하는 방법

<hwc:DropDownList ID="ddlRoomType" runat="server" class="invisible blue" EnableTheming="true" /> 

스킨 파일 :

<%-- Default dropdown appearance --%> 
<asp:DropDownList runat="server" CssClass="dropDownList" AutoPostBack="true"/> 

그리고 asp.net 테마는 추가 스킨 및 속성 추상화 레이어를 제공합니다. 그래서 나는 고전적인 CSS 스타일링과 asp.net 테마링 결합 시나리오에 대해 이야기하고 있습니다.

하지만 asp.net 테마를 사용하여 수동으로 CssClass (또는 클래스) 특성을 제공 할 때 다른 것을 재정의하는 선택을해야합니다.

우리는 수동으로 입력 한 클래스 이름을 asp.net 테마로 만든 동적 클래스 이름과 결합하여 아래와 같이 html 출력을 생성 할 수 있습니다.

<select id="ctl00_Content_ddlRoomType" class="invisible blue dropDownList"> 
    <option value="0">- Select Room -</option> 
    <option value="9">Single Room</option> 
</select> 

다른 테마 로직을 구현하기 위해 재정의 할 .net 테마 클래스를 찾을 수 없습니다. 어떤 아이디어? 감사.

답변

0

CSS 클래스를 결합하는 것은 표준 런타임에서 지원되지 않습니다.

그러나 제어 어댑터를 사용하여 추가하는 것이 매우 쉽습니다. 기존 기본값에 클래스를 추가하려면 CssClass="+dropDownList"과 같은 구문을 사용할 수 있습니다. 컨트롤 어댑터는 더하기 기호를 찾아 그에 따라 CssClass 속성을 설정합니다.

또는 (아마도 쉽게) 관심있는 기존 클래스를 재정의하고 CssClass 속성을 원하는대로 수정합니다.

+0

클래스 이름을 연결하려면 먼저 드롭 다운 컨트롤 클래스에서 CssClass 값 ("dropdownlist +"과 같은 표현식)을 얻어야합니다. 하지만 테마 활성화 모드에서 나는 컨트롤의 OnInit 이벤트에서도 대체 된 값 (드롭 다운 목록) 만 가져올 수 있습니다. Theming 이벤트는 작동하고, 컨트롤과 페이지 클래스 이벤트 전에 값을 대체합니다. 따라서 작업을 수행하기 전에 일부 이벤트를 잡아야합니다. 그럼 당신의 솔루션을 쉽게 구현할 수 있습니다. 감사합니다. –

+0

일반 테마 대신 StyleSheetTheme으로 전환하여 시작할 수도 있습니다. 전자의 경우 페이지의 스킨 속성을 무시할 수 있습니다. 페이지에서 프로그래밍 방식으로 CssClass 속성을 설정할 수 있습니다. 이를 자동화하기 위해, 필자는 대답에서 설명한대로 컨트롤 어댑터 또는 파생 클래스가 필요합니다. – RickNZ

관련 문제