我正在使用C#在ASP.NET代码后面动态构建一个html表。我基本上遍历一组数据,这是一个未知数量的记录,并拆分包含所有值的字符串,以产生所需的tds数。我通过将它分配给asp:Literal控件来显示html。但是我无法让桌子适合屏幕 - 浏览器正在添加一个水平滚动条,整个表格离屏幕很远。我试过IE 8和FF 3.6.13。我在网上看到的大多数内容都说将宽度设置为100%。我这样做但它没有效果。将html分配给像这样的Literal控件呈现与其他任何方式相同吗? aspx页面有一个母版页,aspx页面的前端代码是:
编辑:我在这里粘贴了输出的html代码: http://www.codepaste.net/nza7r8
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server" EnableViewState="False">
<div><br />
<asp:Literal ID="Literal1" runat="server"></asp:Literal><br />
</div>
<div id="paging">
<asp:Button ID="btnPrev" runat="server" Text="Prev" CssClass="niceInput" onclick="btnPrev_Click" Enabled="False" />
<asp:Button ID="btnNext" runat="server" Text="Next" CssClass="niceInput" onclick="btnNext_Click" Enabled="False" />
<asp:Label class="Grid" ID="lblPageNumber" runat="server"/>
<asp:Label class="Grid" ID="lblTotalRecords" runat="server"/>
</div><br />
</asp:Content>
这是背后的代码:
StringBuilder stringBuilder = new StringBuilder();
List<string> errorColumnsList;
stringBuilder.Append("<table align='center' width='100%' style='border-style:inset'>");
//1st element is header so do this separately
stringBuilder.Append("<tr style='font-size:smaller; font-weight:bold'>");
stringBuilder.Append("<td>ID</td><td>Error type</td>");
errorColumnsList = new List<string>(items[0].HoldingsError.Split("||".ToCharArray()));
foreach (string str in errorColumnsList)
{
stringBuilder.Append("<td>" + str.Trim() + "</td>");
}
stringBuilder.Append("</tr>");
//Continue on with the rest of the data - remove header first
items.Remove(items[0]);
foreach (HoldingsErrorItem item in items)
{
stringBuilder.Append("<tr style='font-size:smaller'>");
stringBuilder.Append("<td>" + item.HoldingsErrorID + "</td><td>" + item.ErrorType + "</td>");
errorColumnsList = new List<string>(item.HoldingsError.Split("||".ToCharArray()));
foreach (string str in errorColumnsList)
{
stringBuilder.Append("<td>" + str.Trim() + "</td>");
}
stringBuilder.Append("</tr>");
}
stringBuilder.Append("</table>");
Literal1.Text = stringBuilder.ToString();
答案 0 :(得分:0)
将asp:Literal的.Text
属性设置为HTML字符串确实最终会对表格的HTML进行处理,如果它在页面中明确显示的话。
结果表中有多少列?通常,如果表格比窗口宽,则HTML中的每个表格单元格将其内容包装在空格字符上以减小表格宽度以适应,直到它缩小为单个单词。一旦它到达那一点,它就无法再进一步包裹它与你设置的宽度无关 - 它将被强制为与每列中最长单词的总宽度一样宽。
编辑:演示页面显示了我的预期:大量列,尽管每个列都“收缩包装”到可能的最小宽度(通过在空白处包装内容),但总宽度仍然很大。
我担心这就是HTML表的工作方式。我尝试将style="max-width:3%;overflow:hidden;"
添加到每个td
,但即使这样也不能阻止细胞伸展以适应其最长的无法解决的内容。