如何强制 asp.net GridView 控件将第一行包装在 <thead> </thead> 标签内

Posted

技术标签:

【中文标题】如何强制 asp.net GridView 控件将第一行包装在 <thead> </thead> 标签内【英文标题】:How to force asp.net GridView control to wrap first row within <thead> </thead> tags 【发布时间】:2011-01-27 15:57:33 【问题描述】:

我想在我的 asp.Net GridView 控件中使用Christian Bach's tableSorter client-side table sorting jQuery plugin。

但问题是,在它所写的文档中:

tablesorter 适用于标准 html 表。您必须包括 THEAD 和 TBODY 标签:

不幸的是,asp.net 仅使用标签呈现我的 GridView,并且标题行保留在第一行中。

我试过了:

   dgvRate.HeaderRow.TableSection = TableRowSection.TableHeader;

在调用 .DataBind(); 之后

只有在 header 中有 &lt;TH&gt;&lt;/TH&gt; 才有帮助。但是一切都在&lt;tbody&gt;

里面

我能做到吗,我的意思是将我的第一行从&lt;tbody&gt;&lt;/tbody&gt; 移动到&lt;thead&gt;&lt;/thead&gt;

我不想在 PreRender 阶段手动添加它;我相信这可以更简单地处理,不是吗?

谢谢

【问题讨论】:

【参考方案1】:

有时你必须给它一个可访问的类来触发它,像这样:

protected void Page_Load(object sender, EventArgs e) 

  dgvRate.UseAccessibleHeader = true;
  dgvRate.HeaderRow.TableSection = TableRowSection.TableHeader;
  dgvRate.HeaderRow.CssClass = "headerclass";

不过,为了在所有情况下保持行为的一致性,我会采用 PreRender 路线

【讨论】:

它不适用于我的 gridView。也许因为我在代码隐藏上动态创建了我的 GridView 列。 (我已经在一个简单的 asp.net GridView 上尝试过你的建议,我确认它在那里工作) @burak - 是的,动态调整列会触发很多事件,您是在最后一次操作列之后设置的吗? 完美!我已将其移至 OnPrerender 并且它有效。非常感谢! 感谢 Nick 的回答,这部分对我有用:OnPostBack,新表不会生成 thead 和 tfoot !!!有什么线索吗?我还得到“表格必须按页眉、正文和页脚的顺序包含行部分。”有时... 我找到了我的问题的答案:我将代码放在 gridview 预渲染中(在页面预渲染中)...

以上是关于如何强制 asp.net GridView 控件将第一行包装在 <thead> </thead> 标签内的主要内容,如果未能解决你的问题,请参考以下文章

asp.net 2.0中GridView控件的怪怪问题

ASP.NET 中GridView 控件的DataFormatString属性的用法

如何在 ASP.NET AJAX TabControl 中设置控件样式

asp.net的gridview控件问题

asp.net c# gridview的居中问题

ASP.net 自定义 GridView 控件