我理解这是一个已在.NET 4.0+中修复的问题,但是,升级我们的框架尚不是一个选项。很快,但还没有。暂时我使用的是.NET 3.5。
正如我在许多其他帖子中看到的那样,这是一个非常常见的问题。似乎没有人真正说出为什么这是一个问题,这就是为什么似乎许多答案似乎并没有抓住实际问题。
使用asp:Table控件或asp:GridView控件时,生成的标记看起来如下:
<asp:Table id="table1" border="0" runat="server"></asp:Table>
Gridview大致相同,但包含一个&#39;规则&#39;可以通过将Gridlines属性设置为&#34; none&#34;来省略该属性。但是,将网格线设置为none时,需要处理rules属性,border =&#34; 0&#34;永远都是。
现在问题:为了使用W3验证器验证此代码,border属性必须设置为border =&#34;&#34; OR border =&#34; 1&#34;。这似乎是一个非常简单的解决方案,进一步调查证明恰恰相反。
我试图将值更改为验证程序可接受的内容:
即:
table1.Attributes.Add("border", "1"); // This generates <asp:Table id="table1" border="0" border="1" runat="server"></asp:Table>
table1.Attributes.Add("border", null); // This generates <asp:Table id="table1" border="0" border="" runat="server"></asp:Table>
table1.Attributes["border"] = "1"; // This generates <asp:Table id="table1" border="0" border="1" runat="server"></asp:Table>
table1.Attributes["border"] = ""; // This generates <asp:Table id="table1" border="0" border="" runat="server"></asp:Table>
table1.Attributes.Remove("border"); // This generates <asp:Table id="table1" border="0" runat="server"></asp:Table>
这些都没有达到预期的效果。 asp:表总是生成border =&#34; 0&#34;我似乎无法修改价值。
有没有人有任何其他想法,再次,升级框架暂时不是一个选项。我们将在不久的将来进行升级 - 但不会在此版本投入生产之前。
非常感谢
答案 0 :(得分:3)
我已经研究过这个问题已经有一段时间了,我在互联网上看到的任何内容都无法解决这个问题,甚至Framework 4.0推荐的想法都没有用,因为我的应用程序已经针对Framework 4.0而且仍然无法做到从GridView控件中删除“Border = 0”。我发现的是,我的Web.Config虽然是针对Framework 4.0,但在Pages标签上也将controlRenderingCompatibilityVersion设置为“3.5”。通过删除此设置,它会自动从GridView控件中删除“Border”属性。
答案 1 :(得分:0)
解决方法是通过点击GridView的RowDataBound事件来完成此操作,例如:
protected void MyGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
foreach (TableCell tc in e.Row.Cells)
{
tc.Attributes["style"] = "border: 1px solid #ccc";
}
}
使用GridView,声明性border属性添加一个内联样式声明,该声明仅适用于表本身,而不是单个单元格。
以编程方式添加border属性不使用内联样式,而是使用HTML border属性,这些属性适用于表中的所有边框。
还有一件事,如果你使用Eric Meyer的重置,它会破坏GridView中的表格渲染。该特定问题的解决方案是从重置规则中删除所有表元素。这可能是表格本身不适合你的原因。
答案 2 :(得分:0)
在后面的代码中添加了以下代码,它将起作用。
gridview1.Attributes.Remove("border");
或
gridview1.GridLines = GridLines.None;
谢谢,
答案 3 :(得分:0)
<script type="text/javascript">$('#TableID').removeAttr("border");</script>
当然这是一个“页面上”的解决方案。希望它有所帮助!
答案 4 :(得分:0)
只需将GridLines="None"
添加到gridview即可。它将删除border属性。
欢迎。