[英]Is this the way to implement ObjectDataSource sorting for a POCO?
當我不得不做這么多工作時,有時會感到自己在忽略某些東西。
此代碼成功地對一列進行排序。 switch語句將必須手動構建以進行其他操作。
我是否忽略了這樣做的“實際/簡單”方法?
注意 : msdn文檔中似乎有一條評論說這根本不可能,除非我讀錯了(但是它確實起作用了,只是一種痛苦)。
其他說明 :我在這里沒有足夠的信心使用術語DAC和POCO,因此如果可以更好,請更正我。
ObjectDataSource + GridView :
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataSourceID="ObjectDataSource1" AllowSorting="True">
<Columns>
<asp:BoundField DataField="AppID" HeaderText="AppID" SortExpression="AppID" />
<asp:BoundField DataField="Type" HeaderText="Type" SortExpression="Type" />
<asp:BoundField DataField="Timestamp" HeaderText="Timestamp" SortExpression="Timestamp" />
DataField="Credit" HeaderText="Credit" SortExpression="Credit" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectMethod="GetLeads" TypeName="Leads.LeadsContainer" SortParameterName="sortParameter">
</asp:ObjectDataSource>
DAC的片段 :
public List<ILead> GetLeads(string sortParameter)
{
List<ILead> leads = new List<ILead>();
int numLeads = 10;
Random random = new Random();
while (leads.Count < numLeads)
{
leads.Add(Lead.CreateRandom(random));
}
string[] sortExpressions = sortParameter.Split(',');
if (sortExpressions.Length > 0)
{
string sortExpression = sortExpressions[0];
string[] sortInfos = sortExpression.Split(' ');
string sortField = sortInfos[0];
string sortDirection = (sortInfos.Length == 1 ? "ASC" : "DESC");
switch (sortField)
{
case "Timestamp":
switch (sortDirection)
{
case "ASC":
leads = leads.OrderBy(c => c.Timestamp).ToList();
break;
case "DESC":
leads = leads.OrderByDescending(c => c.Timestamp).ToList();
break;
default:
break;
}
break;
default:
break;
}
}
return leads;
}
POCO(接口) :
public interface ILead
{
string AppID { get; set; }
string Type { get; set; }
DateTime Timestamp { get; set; }
string CDNumber { get; set; }
string IP { get; set; }
string ESourceID { get; set; }
string State { get; set; }
DateTime DateOfBirth { get; set; }
string Email { get; set; }
bool IsVetran { get; set; }
string Credit { get; set; }
}
使用動態linq庫 。 這可以使linq查詢以字符串為參數,但是必須准備字符串。
該字符串可用於任何東西,根據條件進行過濾,在一個值和另一個值之間進行排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.