2012-05-04 193 views
1

我實際上是試圖在一個asp.net項目中使用c#的一個字符串中放置一個換行符。我把這個字符串放到一個DataRow中,並添加到一個名爲「ds」的數據集中。一旦我把這個datable ds鏈接到了gridview。 這是我的代碼:DataTable和GridView中的換行符

  risque.projet = dt.Rows[i]["fk_projet"].ToString(); 
      risque.release = dt.Rows[i]["fk_release"].ToString(); 

      //Create the String for adding to the row 
      String test = "Project:"+risque.projet+"<br>"+ "Release: "+risque.release; 
      drow["Description"] = test; 
      Label1.Text = test; 


      //Add the row to the datatable. 
      ds.Rows.Add(drow); 

      //Link the datatable to the gridview 
      GridView1.DataSource = ds; 
      GridView1.DataBind(); 

我想這樣的輸出:

項目:.......

發佈:.......

,但我總是有:項目:....發佈......

我嘗試了許多解決方案: -System.Environment.NewLine - \ r \ n - \ n

編輯:代碼我gridView.I沒有什麼在我的網格視圖,因爲所有是在運行時創建的。

<asp:GridView ID="GridView1" runat="server" AllowPaging="True" 
     EnableSortingAndPagingCallbacks="True" PageSize="5"> 
     <SelectedRowStyle Wrap="True" /> 
    </asp:GridView> 

但沒有什麼效果。 br標籤的作品,但只有當我在標籤中顯示我的字符串。

您對我的錯誤有了解嗎?您有解決方案嗎?我在這上面花了太多時間。

謝謝

昆汀

+0

你可以顯示Gridview的aspx代碼嗎? – David

回答

3

它應該放在標籤,但該列的HtmlEncode屬性設置爲false。默認情況下,所有字段都是HtmlEncoded,這當然會阻止html標籤像html標籤一樣工作。

但是,如果您正在執行此操作,則需要在代碼隱藏中手動對字段值進行編碼以防止XSS。

"Project:" + Server.HtmlEncode(risque.projet)+ "<br />" + "Release: " + Server.HtmlEncode(risque.release) 

(我喜歡的HTMLEncode到Server.HtmlEncode的Anit-Cross-Site Scripting圖書館implemmentation,但這是另一個主題。)

+0

嗨大衛,你的解決方案是好的,但你的線路不工作。我仍然搜索解決方案。顯然,我必須用server.htmlEncode初始化我的gridview的單元格。 – Quentin91360

+0

啊..我明白了。你讓運行時自動生成列。我想你將需要設置AutoGenerateColumns = false並指定列。您不能從代碼隱藏中指定HtmlEncode。我唯一的另一種選擇是使用TemplateField,這又意味着指定列。 – David

+0

謝謝大衛,我只是找到解決方案,我會發布它。 – Quentin91360

0

我認爲你需要:的<br><br />代替

+0

已經嘗試過。不是這個.TU你反正 – Quentin91360

1

而不將突破標記你的在這種情況下可以使用回車符,vbCrLf。

回車符用於打印和顯示功能。

但是,在C#中不存在vbCrLf。 vbCrLf的值是「\ r \ n」。所以試試下面。

string vbCrLf = "\r\n"; 
String test = "Project:" + risque.projet + vbCrLf + "Release: " + risque.release; 
0

將網格列轉換爲模板列,標籤將做到神奇。如果將數據綁定到標籤,
將起作用。