我有一个带有一些 BoundFields 和 TemplateFields 的 GridView 控件(呈现为表、tr、td)。本质上,我显示两列,应用程序名称和注释(作为文本框),我想要 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 相对宽度起作用。但是,然后我注意到,如果我将长文本放入文本框中,它会水平增长,将其包含的表格拉伸(stretch)到超过 100% 的宽度。 (这是在 IE7 中......在 Firefox 中,溢出:隐藏似乎有效)。
所以,我开始弄乱 CSS 以尝试修复 IE 中的错误,但现在,它不仅仍然溢出,而且我的列宽不再符合 36/65 设置。
最佳答案
在使用 jQuery 之前,先试试这个。我通过谷歌搜索“ie overflow:hidden table cell”找到了它。
How to prevent HTML tables from becoming too wide
将 Javascript 用于样式通常不是一个好主意,特别是如果在产品生命周期的后期出现另一个开发人员并希望添加一列。同意,有时一起破解解决方案在短期内感觉更好,但这只会导致 future 的麻烦。
关于asp.net - 表格内的文本框超出 100% 宽度(仅限 IE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1240802/