ASP.NET GridView 去掉 HTML 样式

8

当我在Asp.Net中使用网格视图时,它会自动生成这个丑陋的HTML样式:cellspacing="0" rules="all" border="1" style="border-collapse:collapse;"

有没有一种方法可以完全不使用这种样式?

更新

目前我得到的是:

<table cellspacing="0" rules="all" border="1" id="ctl00_cphMain_gvTest" style="border-collapse:collapse;">

What I want :

<table id="ctl00_cphMain_gvTest">

所以,完全没有HTML样式。我希望得到干净的HTML,如果需要添加样式,我会使用CSS...
5个回答

8

3
亲爱的,为了删除自动渲染的cellpadding="0",因为它不兼容Html5,我在GridView的标记中设置属性cellspacing为-1,或者通过代码设置。
<asp:GridView runat="server" CellSpacing="-1"/>
Me.GridView.cellspacing = -1

PS:我使用的是.NET 4.5。


我一直在寻找一种方法来去掉 style="border-collapse:collapse;" 属性,而 CellSpacing="-1" 做到了这一点。非常奇怪的默认行为。 - Mark Smith

3
您可以简单地使用皮肤文件(主题),例如:
<asp:GridView runat="server" BorderStyle="None" CellSpacing="5"/>

或者您可以编写ControlAdapter,在其中控制GridView的整个呈现过程。
public class GridViewAdapter : System.Web.UI.WebControls.Adapters.WebControlAdapter
{
  protected override void RenderContents(HtmlTextWriter writer)
        {                
                GridView gridView = Control as GridView;
                if (gridView != null)
                {
                    writer.Indent++;
                    WritePagerSection(writer, PagerPosition.Top);

                    writer.WriteLine();
                    writer.WriteBeginTag("table");
                    writer.WriteAttribute("cellpadding", "0");
                    writer.WriteAttribute("cellspacing", "0");
                    writer.WriteAttribute("summary", Control.ToolTip);
...

然后在浏览器文件中添加适配器:
<browsers>
  <browser refID="Default">
    <controlAdapters>    
      <adapter controlType="System.Web.UI.WebControls.GridView"
               adapterType="CSSFriendly.GridViewAdapter" />
...

2

添加:

CellSpacing="-1" GridLines="None"

将清理标记,生成以下网页:

<table border="0" id="GridView1">

目前还没有办法去掉最后的Border="0",但上述技巧可以大大清理表格。


0
这对我有效:
GridView1.GridLines = GridLines.None;

这并没有为问题提供答案。要对作者进行批评或请求澄清,请在他们的帖子下方留下评论——您总是可以在自己的帖子上发表评论,一旦您拥有足够的声望,您就能够评论任何帖子。- 来自审阅 - Davin Tryon
这并没有回答问题。你有看帖子里的问题吗?告诉我这个有什么用? - user3521369
1
我做过。GridLines.None 是否等于“没有 HTML 样式”?当我看到答案时,它里面有“炸弹”一词,但仍然没有解释为什么这是答案。 - Davin Tryon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接