我有一个GridView控件(使用一些BoundFields和TemplateFields呈现给table,tr,td)。本质上,我显示两个列,Application Name和Notes(作为TextBox),我想要35%,65%的相对宽度。这是我的asp.net标记:
<asp:GridView ID="gridRequestedApps" DataSourceID="llbRequestedApplications" runat="server"
AutoGenerateColumns="False"
DataKeyNames="ComputerID, RequestID"
EnableViewState="False"
cssclass="xGridview">
<Columns>
<asp:BoundField DataField="ComputerID" HeaderText="ID" SortExpression="ComputerID" Visible="False" />
<asp:BoundField DataField="RequestID" HeaderText="ID" SortExpression="RequestID" Visible="False" />
<asp:TemplateField HeaderText="Application Name" ItemStyle-Width="35%" ItemStyle-Wrap="false">
<ItemTemplate><asp:TextBox ID="ApplicationName" runat="server" Text='<%# Bind("ApplicationName") %>' CssClass="input_text"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Notes" ItemStyle-Width="65%">
<ItemTemplate>
<div style="width:100%; overflow:hidden">
<asp:TextBox ID="UserNotes" runat="server" Text='<%# Bind("UserNotes") %>' CssClass="input_text" style="overflow:hidden"></asp:TextBox>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
现在有一点(html与上面显示的略有不同),我确实有35/65的相对宽度。然而,我注意到如果我将长文本放入文本框中,它会逐渐增长,使其包含的表格超过100%宽度。 (这是在IE7中......在Firefox中,溢出:隐藏似乎正在工作)。
所以,我开始搞乱CSS以尝试修复IE中的错误,但现在,它不仅仍然溢出,而且我的列宽不再符合36/65设置。
答案 0 :(得分:2)
在jQuery之前,首先尝试一下。我通过谷歌搜索“ie overflow:hidden table cell”找到了它。
How to prevent HTML tables from becoming too wide
将Javascript用于样式通常不是一个好主意,特别是如果在产品生命的后期,另一个开发人员出现并希望添加一个列。同意,有时一起攻击解决方案在短期内感觉更好,但它只会导致未来的头痛。
答案 1 :(得分:0)
刚刚解决了这个问题,我只是摔倒了......
将文档类型定义更改为
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
但请注意页面的其他部分不会开始跳转。