2012-05-04 18 views
1

私は実際にC#を使用してasp.netプロジェクトの文字列に改行を入れようとしています。この文字列を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

EDIT:私のgridViewのコードはすべて実行時に作成されるため、私のgridviewには何もありません。

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

何も動作しません。 brタグは動作しますが、文字列をラベルに表示するときだけです。

あなたは私のエラーを知っていますか?解決策はありますか?私はこれにあまりにも多くの時間を費やしました。

は、それは、タグを入れて動作しますが、falseに列のHtmlEncodeプロパティを設定する必要があり、

クエンティン

+0

Gridviewのaspxコードを表示できますか? – David

答えて

3

、ありがとうございました。デフォルトでは、すべてのフィールドはHtmlEncodedです。もちろん、htmlタグはhtmlタグのように動作しません。

ただし、これを行う場合は、XSSを防ぐためにコードビハインドでフィールド値を手動でhtmlencodeする必要があります。

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

(私はServer.HtmlEncodeにHtmlEncodeのAnit-Cross-Site Scripting図書館のimplemmentationを好むが、それは別の主題です。)

+0

こんにちはデイビット、あなたのソリューションは良いですが、あなたの行は同様に動作しません。私はまだソリューションを検索します。確かに私はserver.htmlEncodeで私のgridviewのセルを初期化する必要があります。 – Quentin91360

+0

ああ、そうだ。ランタイムが列を自動生成するようにしています。 AutoGenerateColumns = falseを設定して列を指定する必要があると思います。コードビハインドからHtmlEncodeを指定することはできません。私が持っていた唯一の他の選択肢は、列の指定を意味するTemplateFieldを使用することでした。 – David

+0

デービッドありがとう、私は解決策を見つけました。私はそれを投稿するつもりです。 – Quentin91360

0

私はあなたが必要だと思う:<br />の代わり<br>

+0

既に試しました。これではありません。 – Quentin91360

1

代わりの改行タグにあなたを連結この場合、キャリッジリターン文字vbCrLfを使用できます。

キャリッジリターン文字は、印刷および表示機能に使用されます。

ただし、vbCrLfはC#には存在しません。 vbCrLfの値は "\ r \ n"です。だから、これを試してみてください。

0

グリッド列をテンプレート列に変換すると、ラベルが魔法を行います。
は、データをラベルにバインドする場合に機能します。