【问题标题】:Turning off ASP.NET CSS Friendly Adapters关闭 ASP.NET CSS 友好适配器
【发布时间】:2010-09-21 10:54:50
【问题描述】:

用于 ASP.NET 的 CSS 友好控件适配器非常适合创建易于设置样式的标记。 GridView 适配器的一大好处是它可以生成 THEAD、TBODY 和 TFOOT 标签,这使您可以使用 jQuery 等库做一些非常棒的事情 - 例如,Tablesorter 用于客户端表格排序。

问题在于,它似乎是通过 CSSFriendlyAdapters.browser 文件对适配器进行全局开/关。如果我目前已经有大量的 GridViews 正在生产中,并且只想将 CSS 友好适配器用于新的,我该怎么办?

所以我会对两种类型的解决方案感兴趣:

1) 一种扩展或修改 GridView 的方法(可接受新标签)以输出 THEAD 和 TBODY 标签。

2) 一种有条件地应用或禁用 CSS 友好控制适配器的方法。

【问题讨论】:

    标签: asp.net jquery gridview


    【解决方案1】:

    我只是在做了一些研究后做了类似的事情

    您需要对要使用的控件进行子类化(在您的情况下为 gridview,在我的情况下为 radiobuttonlist)

    public class UlRadioButtonList : RadioButtonList
        {
            protected override void Render(System.Web.UI.HtmlTextWriter writer)
            {
                // Call the base RenderContents method.
                base.Render(writer);
            }
        }
    

    然后让 .browser 文件引用您的自定义子类,而不是 asp.net 控件

    例如

    <browsers>
      <browser refID="Default">
        <controlAdapters>
          <adapter controlType="FM.Web.Source.WebControls.UlRadioButtonList" adapterType="FM.Web.Source.ControlAdapters.RadioButtonListAdapter" />
        </controlAdapters>
      </browser>
    </browsers>
    

    【讨论】:

    • 谢谢你,虽然你没有直接帮助我,但你为我节省了很多时间,让我知道正在解决的问题。再次感谢!
    【解决方案2】:

    我找到了一种创建 THEAD 和 TBODY 标签的方法:

    来源:Sortable GridView using jQuery's TableSorter

    裸骨细节:

    myGrid.UseAccessibleHeader = true;
    myGrid.HeaderRow.TableSection = TableRowSection.TableHeader;
    myGrid.FooterRow.TableSection = TableRowSection.TableFooter;
    

    【讨论】:

      【解决方案3】:

      CSS 友好...

      禁用适配器

      如果您明确添加 AdapterEnabled="false" 到您的 服务器端标记,这些示例适配器 将尝试使用 ASP.NET 框架的原生渲染 控制。注意:不支持 并且经常不能很好地工作。 从根本上说,该框架不 支持在每个上禁用适配器 控制依据。 AdapterEnabled 属性仅供使用 实验性的。

      Source

      或者,您可以创建一个派生自 GridView 并覆盖 RenderChildren 方法的类。可能需要一些实验来弄清楚如何使这项工作。我还没有查看控件在 GridView 中是如何呈现的,以便为您提供这方面的任何想法。大概,您只需要弄清楚哪些行是页眉/页脚,然后在它们周围和其他行周围呈现 /。

      【讨论】:

      • 禁用适配器不是一个非常优雅的解决方案,因为它需要触及每个现有的网格。最好有一个可以有条件地启用适配器的解决方案。覆盖 RenderChildren 方法似乎工作量太大,而且在实际使用中太容易出错。
      猜你喜欢
      • 2010-10-13
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 2011-04-20
      • 1970-01-01
      • 1970-01-01
      • 2011-02-18
      相关资源
      最近更新 更多