我有一个gridview 和sqldatasource。
我想删除标题文本下划线,但仅适用于某些列而不是全部。
我该怎么做?
您可以使用RowDataBound
删除 的下划线 LinkButton
。
这会从所有列中删除下划线,但具有HeaderText == "Date":
protected void Grid_RowDataBound(Object sender, GridViewRowEventArgs e)
{
switch (e.Row.RowType)
{
case DataControlRowType.Header:
var notDateFields = ((GridView)sender).Columns
.Cast<DataControlField>()
.Select((c, index) => new { Column = c, Index = index })
.Where(x => x.Column.HeaderText != "Date");
foreach (var field in notDateFields)
{
LinkButton Link = (LinkButton)e.Row.Cells[field.Index].Controls[0];
Link.Attributes.Add("style", "text-decoration:none;");
}
break;
}
}
这种方法只设置样式,以便删除下划线,但无论如何都允许对列进行排序。
如果您只想防止该列是可排序的,则只需删除该SortExpression
属性。
设置autogeneratecolumns="false"
和allowsorting="true"
。然后,您需要将要在<columns>
子元素中显示的所有列定义到 gridview,如下所示:
<columns>
<asp:boundfield datafield="Date" headertext="Date" sortexpression="Date"/>
<asp:boundfield datafield="OtherColumn" headertext="Other Data"/>
</columns>
当您使用时autogeneratecolumns="true"
,allowsorting="true"
默认情况下所有列都是可排序的。当您显式定义列时,那些没有sortexpression
设置属性的列将不可排序。