【问题标题】:Asp.Net GridView Remove Html StylingAsp.Net GridView 移除 Html 样式
【发布时间】:2009-08-21 01:27:04
【问题描述】:

当我在 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;">

我想要什么:

<table id="ctl00_cphMain_gvTest">

所以,根本没有 Html 样式。我想要干净的 Html,如果我想添加样式,我会使用 CSS...

【问题讨论】:

    标签: asp.net gridview


    【解决方案1】:

    看看 ASP.NET 网站上的CSS friendly ASP.NET 2.0 Control Adapaters

    它不仅去掉了大部分丑陋的属性,还添加了theadtbody标签。

    【讨论】:

      【解决方案2】:

      您可以简单地使用皮肤文件(主题),例如:

      <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" />
      ...
      

      【讨论】:

        【解决方案3】:

        亲爱的,要删除cellpadding="0" 的自动渲染,它不兼容Html5,我在GridView 的标记中将属性cellspacing 设置为-1 或通过代码设置。

        <asp:GridView runat="server" CellSpacing="-1"/>
        Me.GridView.cellspacing = -1
        

        PS:我使用 .NET 4.5。

        【讨论】:

          【解决方案4】:

          添加:

          CellSpacing="-1" GridLines="None"
          

          将在网页中大量清除标记:

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

          目前没有办法摆脱最终的 Border="0" 但上述技术确实可以大大清理表格。

          【讨论】:

            【解决方案5】:

            这对我有用:

            GridView1.GridLines = GridLines.None;
            

            【讨论】:

            • 这并没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post。 - From Review
            • “这没有提供问题的答案。”你读过帖子中的问题吗?告诉我这个?
            • 我做到了。 GridLines.None == no Html style at all?当我看到它时,答案中有 bomb 这个词,但仍然没有解释,因为 为什么 这回答了这个问题。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-10-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多