表中的文本框增长超过100%宽度(仅限IE)

时间:2009-08-06 19:16:04

标签: asp.net css

我有一个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设置。

2 个答案:

答案 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">

但请注意页面的其他部分不会开始跳转。