Есть страница
protected void Page_Load(object sender, EventArgs e)
{
...
gvPeriodResult.Columns.Clear();
...
gvPeriodResult.DataSource = dt;
...
gvPeriodResult.Sort();
}
На ней компонент, который достался мне в наследство.
public class GridViewSortArrowExt : GridView
{
void GridView_Sorting(object sender, GridViewSortEventArgs e)
{
...
this.ChangeHeaders(this.HeaderRow, this.ViewState["lastSortExpression"].ToString(), this.ViewState["sortDir" + e.SortExpression].ToString());
this.DataSource = sds.DataSource;//dv;
this.DataBind();
...
}
public void Sort()
{
...
this.Sort(sortExpr, sortDir);//один DataBind() тут
this.DataBind(); //а без этого не обновится хеадер таблицы
}
private void ChangeHeaders(GridViewRow headerRow, string sortExp, string sortDir)
{
...
DataControlField field = ((DataControlFieldCell)headerRow.Cells[i]).ContainingField;
...
field.HeaderText += ...;
...
}
void GridViewSortArrowExt_DataBound(object sender, EventArgs e)
{
...
this.ChangeHeaders(this.HeaderRow, this.ViewState["lastSortExpression"].ToString(), this.ViewState["sortDir" + e.SortExpression].ToString());
...
}
Почему заголовок колонки меняется только после второго DataBind()?
Может его куда-то в другое место надо присваивать чтобы оно восстанавливалось при первом же бинде.