2008-11-08 33 views
3

适用于ASP.NET的CSS友好控制适配器非常适合创建易于样式化的标记。 GridView适配器的一大优点是它生成THEAD,TBODY和TFOOT标签,它们允许您使用jQuery等库来做一些非常棒的事情 - 例如Tablesorter用于客户端表格排序。关闭ASP.NET CSS友好适配器

问题是它似乎是通过CSSFriendlyAdapters.browser文件的适配器的全局开/关。如果我已经有一大堆GridViews正在生产,并且只想使用CSS友好适配器来创建新的GridView,我该怎么办?

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

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

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

回答

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> 
+0

谢谢你,虽然你没有直接帮助我,但你为我节省了很多时间,给我提供了解决问题的线索。再次感谢! – Saxophonist 2015-03-10 18:21:54

0

CSS友好...

禁用适配器

如果你明确添加 AdapterEnabled = “假” 你 服务器端的标签,这些样品适配器 将尝试使用ASP。 NET 框架的原生呈现为 控件。注意:这不支持 ,并且通常无法正常工作。 基本上,框架不支持 控制的基础上禁用适配器。 AdapterEnabled 属性仅用于实验性地使用 。

Source

或者,你可以创建一个GridView控件派生并重写RenderChildren方法的类。可能需要一些实验来弄清楚如何完成这项工作。我没有看过GridView中的控件是如何呈现给你的。据推测,你只需要找出哪些行是头/脚和渲染/围绕他们和周围的其他人。

+0

禁用适配器不是一个非常优雅的解决方案,因为它需要触摸每个现有的网格。有条件启用适配器的解决方案会更好。 重写RenderChildren方法似乎工作太多,并且对于实际使用来说太容易出错。 – 2008-11-10 22:29:07

0

我发现创建THEAD和TBODY标签的方法:

来源:Sortable GridView using jQuery's TableSorter

裸骨详情:

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