读书人

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

发布时间: 2012-10-07 17:28:51 作者: rapoo

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。

?

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

读书人网 >Web前端

热点推荐