如何从某些列中删除标题下划线?

时间:2012-06-21 20:39:57

标签: c# asp.net

我有一个gridview和sqldatasource。

我想删除标题文字下划线,但仅限于某些列而不是全部列。

我该怎么做?

2 个答案:

答案 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属性的列将不可排序。