3

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

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

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

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

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

4

3 回答 3

4

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

您需要对要使用的控件进行子类化(在您的情况下为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>
于 2009-07-21T09:00:04.153 回答
0

CSS 友好...

禁用适配器

如果您将 AdapterEnabled="false" 显式添加到服务器端标记,这些示例适配器将尝试使用 ASP.NET 框架的本机呈现控件。当心:这不受支持,而且通常效果不佳。从根本上说,该框架不支持基于每个控件禁用适配器。AdapterEnabled 属性仅用于实验性使用。

来源

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

于 2008-11-09T20:54:23.450 回答
0

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

资料来源:使用 jQuery 的 TableSorter 的可排序的 GridView

裸骨详细信息:

myGrid.UseAccessibleHeader = true;
myGrid.HeaderRow.TableSection = TableRowSection.TableHeader;
myGrid.FooterRow.TableSection = TableRowSection.TableFooter;
于 2008-11-10T22:48:17.387 回答