2

我有一个gridview 和sqldatasource。

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

我该怎么做?

4

2 回答 2

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属性。

于 2012-06-21T20:57:33.777 回答
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设置属性的列将不可排序。

于 2012-06-21T21:01:30.927 回答