Да, вы можете сделать это. Вот как ты это делаешь.
Предполагается, что у вас есть GridView, который вызывает записи из метода BusinessLayer. Я возьму пример UserManager как прокси-класс бизнес-уровня.
[DataObjectAttribute()]
public static class UserManager
{
[DataObjectMethod(DataObjectMethodType.Select, true)]
public static UserCollection GetUsers()
{
return UserDB.GetAll();
}
[DataObjectMethod(DataObjectMethodType.Select, false)]
public static UserCollection GetUsers(string sortExpression)
{
UserCollection users = UserDB.GetAll();
users.Sort(new EntityComparer<User>(sortExpression));
return users;
}
}
Посмотрите на эту строку кода в перегруженном методе GetUsers.
users.Sort(new EntityComparer<User>(sortExpression));
Я написал реализацию Generic Comparer для своих бизнес-объектов. EntityComparer - это просто универсальный класс, который реализует интерфейс IComparer. Вы можете написать свою собственную реализацию Comparer [которая реализует интерфейс IComparer] и вызвать ее как приведенный выше код.
Вот как выглядит мой GridView ..
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="ObjectDataSource1">
<Columns>
<asp:BoundField DataField="Id" HeaderText="Id" SortExpression="Id" />
<asp:BoundField DataField="UserName" HeaderText="UserName"
SortExpression="UserName" />
<asp:BoundField DataField="Password" HeaderText="Password"
SortExpression="Password" />
<asp:BoundField DataField="Name" HeaderText="Name" SortExpression="Name" />
<asp:BoundField DataField="Email" HeaderText="Email" SortExpression="Email" />
<asp:BoundField DataField="CompanyName" HeaderText="CompanyName"
SortExpression="CompanyName" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
OldValuesParameterFormatString="original_{0}" SelectMethod="GetUsers"
TypeName="FilePark.BusinessLayer.UserManager"></asp:ObjectDataSource>
Также обратите внимание, что GridView передаст sortExpression при обратной передаче и вызовет перегруженный метод.