Table的寬度,單元格內換行問題

一.     要想固定table的總的寬度和每列的寬度:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

<TABLE id="Table1" style="TABLE-LAYOUT:fixed" border="1">

或在腳本中:

this.style.tableLayout = fixed

 

HTML

{ table-layout : sLayout }

Scripting

object.style.tableLayout [ = sLayout ]


可能的值:

 

sLayout

String 設置或獲取下面的值:

auto

缺省設置. 列寬將設置爲不可分割的最大的內容的寬度。

fixed

表的寬度和列的寬度固定,不隨單元格中內容而改變

一.     設置了各個列的寬,沒有設表的寬:表的寬度等於各個列的寬度的和

二.     設置了表的寬度,沒有設各個列的寬度:各個列的寬度平均分配

三.     要是都沒設置寬度:表的寬度爲100%,各個列的寬度平均分配

 

二.     換行問題

<td>有個attribute NOWRAP,可以控制每個單元格是否允許換行

 

<TD nowrap=true>

或者

this.noWrap = true

 

HTML

<ELEMENT NOWRAP ... >

Scripting

object.noWrap [ = bWrap ]

可能的值:

bWrap

Boolean 設置或獲取一個下面的值:.

false

缺省值. 允許單元格的單詞字符回行.

true

不允許單元格回行,除非字符中含有”<br>”

 

Asp.netDataGrid有個問題,它的Column有個屬性ItemStyle.Wrap,設計是當這個列的ItemStyle.Wrap屬性爲true時,單元格允許回行,爲false不允許回行,可是當設置了爲false時輸出到客戶端的是這樣的:

<td nowrap=”nowrap”> 

而不是

<td nowrap=”true”>

所以ItemStyle.Wrap屬性是沒有起作用的,請自己手工在DataGrid1_ItemDataBound事件中將不允許回行的那些單元增加個Attribute nowrap=true

private void DataGrid1_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)

{

e.Item.Cells[n].Attributes.Add("nowrap"," true ") ;

}

 

三.     截斷英文單詞強行回行

上面兩個方法可以把表格的寬度都固定了,每個單元是否允許回行都可以設定了,現在可能又會碰到一個問題,當允許回行的遇到比較長的英文單詞,可能就超出了這個單元格的寬度,要是不把這個單詞從中截斷強行換行的話,這個單詞的超出單元格寬的的部分將不被顯示出來。所以需要在單詞超出單元格長度的地方把單詞強行截斷回行。

可以利用css中的word-break 風格來達到我們的目的:

 

<TABLE id="Table1" style="TABLE-LAYOUT:fixed;word-break:break-all" border="1">

或在腳本中:

this.style. wordBreak = break-all

 

HTML

{ word-break : sBreak }

Scripting

object.style.wordBreak [ = sBreak ]

可能的值:

sBreak

String設置或獲取一個下面的值:

normal

缺省值. 允許從每個詞處回行。

break-all

不管在什麼位置,超過列寬時就回行。

keep-all

不允許 Chinese, Japanese, Korean 回行。這個功能類似與“normal” 的非亞洲語言版本。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章