2013-03-05 1 views
2

SQL 데이터베이스에서 DataList 또는 유사한 컨트롤로 끌어온 새 줄 문자를 표시하는 데 문제가 있습니다. 문자를 삽입하면 문자가 보존되므로 빠른 SELECT 문에 줄 바꿈이 표시됩니다. 그러나 데이터를 데이터리스트로 가져 오면 새 라인이 아닌 공백이 표시됩니다. 코드는 현재 다음과 같습니다 : 그것은이에바운드 레이블에 SQL에서 줄 바꿈 표시

<asp:Label ID="CommentLabel" runat="server" Text='<%# Eval("Comment").ToString().Replace(Environment.NewLine, "<br />") %>' /> 

내가뿐만 아니라 Server.HTMLEncode를 사용하기위한 권장 사항을 본 적이, 내가 그런 상황에서 그것을 사용에에 예와 그러나 아무도 좋아하는 것이다, 내 시도 다음과 같이 눈에 띄는 차이가 없었습니다.

<asp:Label ID="CommentLabel" runat="server" Text='<%# Server.HTMLEncode(Eval("Comment").ToString()).Replace(Environment.NewLine, "<br />") %>' /> 

여기 퍼즐이 없습니다.

EDIT : 여러 줄 입력란 안에 Enter를 통해 새 줄이 만들어집니다. 나는 그 문자가 Environment.Newline에 포함 된 것보다 다른 문자를 만들지는 모르겠지만 생성 된 HTML은 <span> 태그 안에 적절한 줄 바꿈이 있지만 <br /> 태그가 없으므로 다른 것으로 추측합니다. 그렇다면 대체 할 적절한 캐릭터는 무엇입니까?

<table id="GridView1"> 
<tr> 
<td> 
hello<br/>hello 
</td> 
</tr> 
</table> 

하지만합니다 (있는 GridViews을 변환 할 경우 또는 기타 :

EDIT2 : 항목 템플릿

<ItemTemplate> 
    <tr style="font-weight:bold"> 
     <td> 
      Comment ID: <asp:Label ID="CommentIDLabel" runat="server" Text='<%# Eval("CommentID") %>' /> 
      Commenter: <asp:Label ID="CommenterLabel" runat="server" Text='<%# Eval("Username") %>' /> 
      Comment Date: <asp:Label ID="DateLabel" runat="server" Text='<%# Eval("Date") %>' /> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <asp:Label ID="CommentLabel" runat="server" Text='<%# (Eval("Comment")).Replace(Environment.NewLine, "<br />") %>' /> 
     </td> 
    </tr> 
</ItemTemplate> 
+1

코드에서 생성하는 HTML이 무엇인지 확인 했습니까? –

+0

줄 바꿈이 표시되지만
으로 바뀌지 않습니다. 그것은 이전에 텍스트 상자에서 엔터 키로 구분이 이루어지고 생성 된 문자가'Environment.NewLine'에 포함되지 않아서'.Replace'가 누락되기 때문입니다. – Crimius

+0

분명히 문제는 데이터베이스에서 검색하는 문자열에'Environment.NewLine'이 나타내는 형식으로 줄 바꿈 문자가 없다는 것입니다. 검색된 문자열을 복사하거나 디버거에서 해당 내용을보고 어떤 문자가 NewLine을 나타내는 지 확인할 수 있습니다. 전혀 없을지도 모른다. –

답변

1

Augustin Meriles가 그의 의견에서 말했듯이, 문제는 다중 행 텍스트 상자에 입력 할 때 Environment.NewLine에 포함 된 새로운 줄 문자를 사용하지 않는다는 사실에 있습니다. 어떤 사람들은 그것을보고 vbCrLf을 사용하는 것과는 대조적으로 vbCrvbLf으로 쓰고있는 것으로 나타났습니다. 그것을 알면 교체 방법을 변경하면 해결할 수 있습니다.

<asp:Label ID="CommentLabel" runat="server" Text='<%# (Eval("Comment")).Replace(vbCr, "").Replace(vbLf, vbCrLf).Replace(Environment.NewLine, "<br />") %>' /> 

이렇게하면보기 전체에서 인식되고 일관된 줄 바꿈을 얻을 수 있습니다.

0

시계 페이지에 의해 생성 된 HTML 코드, 당신은 같은 것을 볼 수에 대한 코드 컨트롤) 열 유형을 템플릿 필드에 입력하면 다음과 같이 표시됩니다.

<table id="GridView1"> 
<tr> 
<td> 
<span id="GridView1_Label1_0">hello <br/>hello</span> 
</td> 
</tr> 
</table> 

아아 거기에 줄 바꿈이 있습니다! 따라서 모두 열을 템플릿 필드로 변환하면됩니다.