他のすべてが等しい場合、asp:GridViewのBoundField列は並べ替え可能ですが、TemplateField列は並べ替えることができません。何故ですか?
<asp:LinqDataSource ID="someDataSource" runat="server"
ContextTypeName="someDataContext" TableName="someTable"
OnSelecting="someSelectingHandler" />
<asp:GridView ID="somGrid" runat="server"
AllowPaging="true" AllowSorting="true"
EnableSortingAndPagingCallbacks="true" PageSize="15"
DataSourceID="someDataSource" EnableViewState="true"
EmptyDataText="No orders matched your criteria">
<Columns>
<!-- resulting column is sortable: -->
<asp:BoundField HeaderText="Order #" HtmlEncode="false"
DataField="order_number" SortExpression="order_number">
</asp:BoundField>
<!-- resulting column is not sortable: -->
<asp:TemplateField SortExpression="order_number">
<HeaderTemplate>Order #</HeaderTemplate>
<ItemTemplate><%# DataBinder.Eval(Container.DataItem,
"order_number")%></ItemTemplate>
</asp:TemplateField>
BoundFieldヘッダーをクリックすると、ポストバックが発生し、Selectingイベントハンドラーが呼び出されます。IQueryableを返すだけで、それ自体は並べ替えを処理しません。ドキュメントには、GridViewを並べ替え可能にするために、「基になるデータソースは並べ替えをサポートする必要がある」と記載されているだけです。どうやらLinqDataSourceはソートをサポートしているようです。そうでないと、BoundFieldはソートできません。それとも私は何かが足りないのですか?