2
當我必須做這麼多工作時,我有時會感覺到我忽略了某些東西。這是爲POCO實現ObjectDataSource排序的方式嗎?
此代碼成功地對一列進行排序。 switch語句將不得不手動編譯出來。
我是否忽視了「實際/簡單」的方式來做到這一點?
note:msdn docs中似乎有一條評論說除非我讀錯了(但它確實有效,只是一種痛苦),這根本不可能。
其他注意事項:我在這裏使用的術語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; }
}
看起來很像我見過的所有必須這樣做的ASP.NET WinForms代碼。從未如此簡單。 – 2012-02-24 03:49:36
@ JesseC.Slicer - ASP.NET的WinForms?這將是一個巧妙的把戲。 – 2012-02-24 04:09:04
@ M.Babcock手指移動速度比大腦快。當然是WEBforms。 – 2012-02-24 04:32:36