table的宽度,单元格内换行问题

table的宽度,单元格内换行问题

一.    要想固定 table 的总的宽度和每列的宽度:

 

 

 

<TABLEid="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 ,可以控制每个单元格是否允许换行

 

 

 

<TDnowrap=true>

 

或者

 

this.noWrap=true

 

 

 

HTML

 

<ELEMENT  NOWRAP...>

 

Scripting

 

object . noWrap[ = bWrap]

 

可能的值:

 

bWrap

 

Boolean 设置或获取一个下面的值: .

 

false

 

缺省值 . 允许单元格的单词字符回行 .

 

true

 

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

 

 

 

 

Asp.net DataGrid 有个问题,它的 Column 有个属性 ItemStyle.Wrap ,设计是当这个列的 ItemStyle.Wrap 属性为 true 时,单元格允许回行,为 false 不允许回行,可是当设置了为 false 时输出到客户端的是这样的:

 

<tdnowrap=”nowrap”> 

 

而不是

 

<tdnowrap=”true”>

 

所以 ItemStyle.Wrap 属性是没有起作用的,请自己手工在 DataGrid1_ItemDataBound 事件中将不允许回行的那些单元增加个 Attribute nowrap=true

 

private voidDataGrid1_ItemDataBound( objectsender,System.Web.UI.WebControls.DataGridItemEventArgse)

 

{

 

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

 

}

 

 

 

三.      截断英文单词强行回行

 

上面两个方法可以把表格的宽度都固定了,每个单元是否允许回行都可以设定了,现在可能又会碰到一个问题,当允许回行的遇到比较长的英文单词,可能就超出了这个单元格的宽度,要是不把这个单词从中截断强行换行的话,这个单词的超出单元格宽的的部分将不被显示出来。所以需要在单词超出单元格长度的地方把单词强行截断回行。

 

可以利用 css 中的 word-break 风格来达到我们的目的:

 

 

 

<TABLEid="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” 的非亚洲语言版本。

 

 

你可能感兴趣的:(table)