如何强制 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 中有 <TH></TH>
才有帮助。但是一切都在<tbody>
我能做到吗,我的意思是将我的第一行从<tbody></tbody>
移动到<thead></thead>
?
我不想在 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 中GridView 控件的DataFormatString属性的用法