asp.net 에서 option 항목 에 선도 빈 칸 을 채 우 는 방법

웹 페이지 의 드 롭 다운 목록 상자(SELECT element)를 사용 하여 데이터 목록 을 표시 할 때 차원 있 는 데이터 항목 을 만 날 수 있 습 니 다.예 를 들 어 포럼 의 서브 포럼 과 그 분류 사이,그리고 관 계 를 포함 하 는 차원 데이터 항목 등 이다.드 롭 다운 목록 상자 에 서로 다른 level 을 들 여 쓰 는 것 은 매우 우호 적 인 레이아웃 방식 입 니 다.    HTML 작성 상태 나 ASP 등 스 크 립 트 언어 에서 이러한 드 롭 다운 목록 창 을 만 드 는 것 은 매우 쉽다.우 리 는 빈 칸 을 알 고 있 습 니 다."Option 태그 의 앞 뒤 는 brower 의 디 스 플레이 엔진 에 의 해 자동 으로 무시 되 기 때문에 하 드 빈 칸  를 사용 합 니 다."면 됩 니 다.효 과 는 다음 그림 과 같 습 니 다.    Select01.png
    이렇게 간단하게 이 효 과 를 실현 하 니 할 말 이 없 는 것 같다.그러나 우리 가 ASP.NET 에서 서버 컨트롤 인 Listbox 나 DropDownlList 를 사용 할 때 이 효 과 를 실현 하려 면 문제 가 발생 합 니 다.ListItem 류 의 Text 속성 은 HTML 코드 로 출력 될 때 자동 으로 HtmlEncode 변환 을 하기 때문에 위의 예제 가 출력 됩 니 다.    Select02.png
    정말 답답 하 다.나 는 이 문 제 를 처음 만 났 을 때 매우 추 한 방법 으로 해결 했다.컨트롤 을 다시 불 러 오 는 것 입 니 다.Render 에서" "nbsp대개:
class XxxDropDownList : DropDownList {     protected override void Render(HtmlTextWriter writer)      {         StringBuilder strb = new StringBuilder();         StringWriter sw = new StringWriter(strb);         HtmlTextWriter htw = new HtmlTextWriter(sw);         base.Render(htw);         strb.Replace(" ", " ");         writer.Write(strb.ToString());     } }    이 해결 방안 은 문제 가 매우 많 고 효율 은 하나의 일 이 며 매우 완비 되 지 않 았 다.이런'야만 적'인 렌 더 결 과 를 수정 하 는 방법 외 에 도 추녀 의 방법 중 하 나 는 전각 의 스페이스 를 사용 하 는 것 이 바로''이다.그러나 중국어 시스템 에서 도 이런 방법 은 과거 에 말 한 것 같 지만 순수한 영어(Not support East-Asian language)환경 에서 이러한 Option 항목 은 어 지 럽 습 니 다.잘못된 효 과 는 다음 그림 과 같 습 니 다.    Select03.png     // 왼쪽 그림 은 중국어 시스템 에서 오른쪽 그림 은 순수 영어 시스템 에서    그럼 어 떡 하지?ListItem 을 다시 불 러 옵 니까?!그러나 이 길 은 통 하지 않 습 니 다.ListItem 류 는 sealed 로 장식 되 어 있 습 니 다.나중에 나 는  를 사용 할 수 있다 는 것 을 알 게 되 었 다.DropListBox 가 정확 한 HTML 코드 를 출력 할 수 있 도록'원본 형식'을 사용 합 니 다.무엇이  입 니까?의 원시 형식 은? 이 물건 은 원래 RFC 1866 에서 정 의 된 named enity 로 전 칭:no-break space,CDATA 형식 은&\#160;이다.ListItem 의 Text 에 160 을 문자 로 넣 으 면 정확 한 HTML 출력 을 얻 을 수 있 습 니 다.효 과 는 첫 번 째 그림 의 HTML 예제 효과 와 같 습 니 다.서버 쪽 코드:
char nbsp = (char)0xA0; for ( int i=0 ; i < 5 ; ++i ) {     ddl3.Items.Add(new ListItem("Level 0".PadLeft(i+7, nbsp) + i, i.ToString())); }     생 성 된 클 라 이언 트 코드 는:

좋은 웹페이지 즐겨찾기