並べ替え ( AllowSorting ) を有効にし、イベントOnSortingを処理する必要があります。
注: サンプル コードは C# を使用していますが、VB バージョンも同様のはずです。
GridViewを作成します。
<asp:GridView ID="GridView1" runat="server" AllowSorting="True" OnSorting="GridView1_Sorting">
</asp:GridView>
OnSortingを処理します。
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
{
GridView1.DataSource = GetObjects(e.SortDirection, e.SortExpression);
GridView1.DataBind();
}
GetObjectsは、ソートされた を返しますList<MyObject>
。ここで独自の並べ替えロジックを作成する必要があります。1 つの代替手段として、 Dynamic Linqを使用できます。そのルートを選択した場合、GetObjectsは次のように定義できます (もっと良い方法がありますが、理論を示すにはこれで十分です)。
private List<MyObject> GetObjects(SortDirection sd, string se)
{
// Have we generated data before?
if (SimulatedDB == null)
{
// Create a sample DB
SimulatedDB = new List<MyObject>();
var rnd = new Random();
for (int i = 0; i < 20; i++)
{
var node = new MyObject();
node.Id = i;
node.Name = String.Format("Name {0}", i);
node.CreationDate = DateTime.Now.AddDays(rnd.Next(100));
node.Amount = (rnd.Next(1000) * rnd.NextDouble());
SimulatedDB.Add(node);
}
}
// Return sorted list
if (sd == SortDirection.Ascending)
return SimulatedDB.AsQueryable<MyObject>().OrderBy<MyObject>(se).ToList();
else
return SimulatedDB.AsQueryable<MyObject>().OrderByDescending<MyObject>(se).ToList();
}
それが役に立てば幸い。