2011-10-04 3 views

답변

7

이 해결책을 찾았지만 다른 사람들을 돕기 위해 게시했습니다.

일부 사용자는 리피터를 사용하는 것이 좋습니다 그것은 바로,하지만 그 경우에이 brspan를 만들 것입니다 datalist

RepeatLayout=RepeatLayout.Flow 

div 대신 table을 대체 할 수 있습니다. 그러나 RepeatDirectionHorizontal을 사용하면 br을 제거하지만 여전히 span으로 렌더링 된 항목은 삭제합니다.

RepeatDirection=RepeatDirection.Horizontal 

이 문장은 span로 렌더링 br하지만 여전히 항목을 제거합니다. 당신이 Horizontal RepeatDirection을 사용하지 않으려면

그래서 다음과 같이, 자신의 divs 외부 span을 만들고 br을 제거하기 위해 RenderContents를 오버라이드 (override) :

protected override void RenderContents(HtmlTextWriter w) 
{ 
    writer.WriteBeginTag("div"); 
    writer.WriteAttribute("id", this.ClientID); 
    writer.WriteAttribute("class", cssClass); 
    writer.Write(HtmlTextWriter.TagRightChar); 
    foreach (DataListItem li in this.Items) 
    { 
     writer.WriteBeginTag("div"); 
     writer.WriteAttribute("id", li.ClientID); 
     writer.WriteAttribute("class", li.CssClass); 
     writer.Write(HtmlTextWriter.TagRightChar); 
     li.CssClass = null; // clear css not to added in span 
     li.RenderControl(w); 
     writer.WriteEndTag("div"); 
    } 
    writer.WriteEndTag("div"); 

} 

난 항상 레이아웃을 흐름에 DataList에 설정

+0

문제가 해결되면 대답을 표시하십시오. –

+0

나는 여기 시스템이 2 일 동안 기다려야합니다. :) – Mhmd

2

컨트롤 대신 <asp:Repeater> 컨트롤을 사용하십시오. <asp:Repeater><ItemTemplate> 안에는 <div> 태그를 사용하여 레이아웃을 제어 할 수 있습니다. 리피터는 자신이 제공 한 HTML과 다른 HTML을 렌더링하지 않으므로 레이아웃을 제어 할 수 있습니다.

+0

답해 주셔서 감사합니다.이 답변을 염두에 두지 만, 페이징 및 기타 옵션을 사용하는 사용자 정의 컨트롤 데이터리스트가 있습니다. – Mhmd

+0

페이징은 리피터로 구현하기가 정말 어렵습니다. PagedDataSource를 사용하여 데이터를 제어 한 다음 페이지 매김을 직접 렌더링 할 수 있습니다.다른 컨트롤이 할 수있는 리피터 컨트롤로는 아무 것도 할 수 없었습니다. –

+0

문제는 컨트롤이 내 프로젝트의 많은 페이지에 5 년 동안 배치되어 모든 일을 할 수 있도록 사용자 정의되었지만 사용자의 의견이 맞습니다. 다시 말해서 알려 드리겠습니다 :) Thanks again – Mhmd

1

내 안부 like :

RepeatLayout="Flow" CssClass="my_repeater_cssclass" 

여기에서 문제는 닷넷 위에 여전히 br 태그를 가지고 놀 수 있습니다.

내 솔루션은 DataList 자체가 적용된 CSS 클래스를 통해 DataList가 표시하도록 생성하는 br 태그로 설정됩니다. 어떤 이유로 당신이 보여주고 싶은 않는 BR 태그를 가지고있는 경우

.my_repeater_cssclass br 
{ 
    display : none; 
} 

그런 다음, 당신의 BR 태그를 CSS 클래스를 제공하고 당신이 원하는 것을 할 수 있도록 ...처럼 내 실제 예를 들어 나는 결국 그것을 사용하는 모든 행 후 float를 지우려면 :

.my_repeater_cssclass br.clear 
{ 
    display : block; 
    clear : both; 
} 

당신이 다음이 당신의 해결책이 될 수 없습니다 다루는 BR 태그 많은이있는 경우. 그러나 나는 그것을 좋은 간단한 해결책으로 생각한다.

관련 문제