Dziękuję za odpowiedzi na temat sortowania. Zwróciłem się do LINQ, aby pomóc w dynamicznym sortowaniu. Ponieważ siatka wie, czy sortować ASC lub DESC i które pole, użyłem wyrażeń LINQ. Wyrażenie wykonało sortowanie, a następnie po prostu powiązałem te wyniki z moim widokiem siatki.
Podejrzewam, że metoda jQuery byłaby szybsza i nie wymagałaby pełnego odświeżenia.
using System.Linq.Expressions;
public SortDirection GridViewSortDirection
{
get
{
if (ViewState["sortDirection"] == null)
ViewState["sortDirection"] = SortDirection.Ascending;
return (SortDirection)ViewState["sortDirection"];
}
set { ViewState["sortDirection"] = value; }
}
protected void gridView_Sorting(object sender, GridViewSortEventArgs e)
{
//re-run the query, use linq to sort the objects based on the arg.
//perform a search using the constraints given
//you could have this saved in Session, rather than requerying your datastore
List<T> myGridResults = PerfomSearch();
if (myGridResults != null)
{
var param = Expression.Parameter(typeof(T), e.SortExpression);
var sortExpression = Expression.Lambda<Func<T, object>>(Expression.Convert(Expression.Property(param, e.SortExpression), typeof(object)), param);
if (GridViewSortDirection == SortDirection.Ascending)
{
myGridView.DataSource = myGridResults.AsQueryable<T>().OrderBy(sortExpression);
GridViewSortDirection = SortDirection.Descending;
}
else
{
myGridView.DataSource = myGridResults.AsQueryable<T>().OrderByDescending(sortExpression);
GridViewSortDirection = SortDirection.Ascending;
};
myGridView.DataBind();
}
}
przydatne, thanks .. Ciekawy zobaczyć jak działają metody z jQuery! Merci beaucoup .. – bAN
@ p.campell: nieznacznie zmodyfikowano metodę, ponieważ GridView 'e.SortDirection' zawsze zwraca' SortDirection.Ascending'. mam nadzieję, że nie masz nic przeciwko – naveen