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設定或獲取下面的值:
|
二.換行問題
<td>有個attribute 叫 NOWRAP,可以控制每個單元格是否允許換行
<TD nowrap=true>
或者
this.noWrap = true
HTML |
<ELEMENT NOWRAP |
Scripting |
object.noWrap [ = bWrap ] |
可能的值:
bWrap |
Boolean設定或獲取一個下面的值:.
|
Asp.net的DataGrid有個問題,它的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設定或獲取一個下面的值:
|