[英]C# HTML tags inside GridView
我有一個我在C#中編寫的SharePoint Web部件,用於根據用戶選擇顯示SQL Server數據。 我使用DataReader提取數據,用它填充DataSet,並將DataSet設置為GridView中的DataSource,並將該控件添加到我的頁面:
GridView outputGrid = new GridView();
outputGrid.CssClass = "OutputGrid";
outputGrid.DataSource = flipped_ds1;
outputGrid.RowDataBound += outputGrid_RowDataBound;
outputGrid.DataBind();
Controls.Add(outputGrid);
這給了我一個帶有聲明的CSS類的簡單HTML表,就是它。 我面臨的唯一問題是數據字段中的換行符根本沒有呈現。 我只是得到一個文本塊,忽略了數據庫呈現為HTML時存在的中斷。 在單步執行代碼時,我看到換行符以“\\ r \\ n”的形式作為文本進入。 我嘗試了一個正則表達式:
Regex rgx = new Regex("\r\n");
string inputStr = Convert.ToString(dr[x]);
string outputStr = rgx.Replace(inputStr, "<br />");
newRow[ds3.Tables["Bobst Specs 3"].Columns[x]] = outputStr;
雖然這確實檢測並替換了換行符,但我只是得到了“
“沒有換行符。在查看HTML源代碼時,它會在我指定的位置插入以下行”
“:
<br />
我還嘗試將我的SQL查詢更改為以下內容:
SELECT REPLACE (fldCustomerName, '. ', '.' + @NewLineChar)
這顯然會帶來更多新的線條。 我可以看到它們存在,因為如果我也插入正則表達式它們會受到影響,但不會創建換行符。 我不知道如何更換這些,以及如何更換線條來實際打破。
在網格視圖中禁用所需列中的HTML呈現
<asp:BoundField DataField="MyColumn" HtmlEncode="false" />
並在現場放
作為你的文字的新行
更新:我理解的是新的線條沒有在gridview中顯示,然后你試圖通過用<br />
替換\\ n來強制它,我同意你的意思。 但是br標簽轉換成html實體的下一個問題。 並且您沒有在gridview中使用強定義的列。 它是自動生成列。 如果是這樣,你所有的步驟都是正確的,還有一件事要做
嘗試將\\ n更改為\\ r \\ n
改變<br />
到<br>
如果您有權訪問生成的HTML,則可以執行以下操作:
在生成的HTML中,注入或插入以下內容:
<script type="text/javascript"> function changeNewLines(){ var inner_html = document.getElementById('theIDofyourgeneratedtable').innerHTML; var new_inner_html = inner_html.replace('$MYNEWLINE$', '<BR/>'); document.getElementById('theIDofyourgeneratedtable').innerHTML = new_inner_html; } window.onload = changeNewLines; </script>
您還可以使用Jquery使上述更加跨瀏覽器友好。
我有一個類似的問題,在數據中呈現“&”。 解決方案是覆蓋RowCreated以關閉生成的字段上的HtmlEncode。 幸運的是,這正如我所希望的那樣 - 它確實安全地處理了腳本標簽。
myGridView.RowCreated += MyGridView_RowCreated;
myGridView.DataSource = gridData;
myGridView.DataBind();
private void MyGridView_RowCreated(object sender, GridViewRowEventArgs e)
{
Foreach (TableCell cell in e.Row.Cells)
{
BoundField field = (BoundField)((DataControlFieldCell)cell).ContainingField;
field.HtmlEncode = false;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.