当我不得不做这么多工作时,我有时会感觉到我忽略了某些东西。
此代码成功排序了一列。必须手动构建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; }
}
答案 0 :(得分:0)
使用Dynamic linq library。这可以使linq查询以字符串作为参数,但字符串必须准备好。
该字符串可以用于任何事情,根据条件进行过滤,排序,在一个值和另一个值之间。