我已经做了相当多的研究,我看到的所有内容都会让人们谈论在gridview中设置列宽或者尝试应用一个从不起作用的类,除非你将宽度扩展到超过内部的数据。它 - 意味着看起来你不能简单地将渲染表的大小缩小到小于其内部数据大小的任何值。
给出以下GridView代码:
<asp:GridView
ItemStyle-CssClass="Item"
ID="MainGrid"
CssClass="DistDataGrid"
CellPadding="3"
runat="server"
AutoGenerateColumns="False"
Width="100%"
HeaderStyle-CssClass="Header"
RowStyle-CssClass="Item"
AlternatingRowStyle-CssClass="AltItem"
AllowSorting="True"
AllowPaging="False"
DataKeyNames="id">
...
我们看到我特别声明渲染表的大小应该绝对是容器的大小(在这种情况下,1800像素),但渲染表的最终宽度为2545像素,因为它包含的数据。
没有办法强制渲染表正好是容纳它的容器的宽度(最大宽度),而不是扩展到它包含的数据而不指定各列的宽度?
请注意,设置width: 100%
或max-width: XXX pixels
不有效...
答案 0 :(得分:0)
这可能取决于您尝试放入表中的数据类型,但假设您正在存储文本,我使用GridView为我工作:
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="ProductID" DataSourceID="SqlDataSource2" Width="800">
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="Product ID" ReadOnly="True" SortExpression="ProductID"/>
<asp:BoundField DataField="ProductName" HeaderText="Product Name" SortExpression="ProductName" />
<asp:BoundField DataField="Quantity" HeaderText="Quantity" SortExpression="Quantity" />
<asp:BoundField DataField="Price" HeaderText="Price" SortExpression="Price" />
<asp:BoundField DataField="DateCreated" HeaderText="Date Created" SortExpression="DateCreated" />
<asp:BoundField DataField="CreatedBy" HeaderText="Created By" SortExpression="CreatedBy" />
</Columns>
</asp:GridView>
在这种情况下,我只需设置&#34;宽度&#34;属性为值,而不是max-width。
您还可以尝试确保为数据最大的列启用换行:
<asp:BoundField>
<ItemStyle Wrap="True" />