次のコードでは、ObjectDataSourceにバインドされたGridViewのデータをページングし、 "ID"列でソートするためにLINQ to SQLを使用します。Linq to SQL:任意の列名でasp gridview objectdatasourceを注文します
public IQueryable<MYDATATYPE> GetMYDATATYPE(int maximumRows, int startPageIndex, int startRowIndex, string orderByColumnName)
{
// page query
var query = Context.MYDATATYPEs.Skip(startRowIndex).Take(maximumRows);
// ordering by the ID column
query = query.OrderBy(x => x.ID);
return query;
}
代わりのID列によるソート、それは代わりにorderByColumnNameパラメータで指定した列名でソートすることは可能でしょうか?
私はちょうど、このように、OrderByFunctionに
query = query.OrderBy(orderByColumnName);
を「orderByColumnName」を置くと考えていた。しかし、それは私にこのエラーを与える:
Error CS0411 The type arguments for method 'Queryable.OrderBy(IQueryable, Expression>)' cannot be inferred from the usage. Try specifying the type arguments explicitly.
はここで関数を使用して、ASPのオブジェクトデータソースです:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="GetMYDATATYPE" SelectCountMethod="GetMYDATATYPECount"
TypeName="Paging.MyData" EnablePaging="true"
SortParameterName="OrderByColumName">
<SelectParameters>
<asp:Parameter Name="maximumRows" Type="Int32" />
<asp:Parameter Name="startPageIndex" Type="Int32" />
<asp:Parameter Name="startRowIndex" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>