我有一个gridview和sqldatasource。
我想删除标题文字下划线,但仅限于某些列而不是全部列。
我该怎么做?
答案 0 :(得分:2)
您可以使用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
属性。
答案 1 :(得分:2)
设置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
属性的列将不可排序。