I have a gridview and sqldatasource.
I want to remove the header text underline but only for some columns not all of them.
How can I do it?
を使用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
ソートできなくなります。