1. 程式人生 > >table的寬度,單元格內換行問題

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事件中將不允許回行的那些單元增加個Attributenowrap=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” 的非亞洲語言版本。