나는이 일을 많이해야 할 때 뭔가를 간과하는 느낌을받는 경우가 있습니다.POCO에 대한 ObjectDataSource 정렬을 구현하는 방법입니까?
이 코드는 하나의 열을 성공적으로 정렬합니다. 스위치 명령문은 수동으로 추가로 작성해야합니다.
나는 이것을 "실제/쉬운"방법으로 간과하고 있습니까?
참고 : 나는 그 잘못을 읽고 있어요 않는 한이 전혀 불가능하다 말하는 msdn docs에서 코멘트있을 것 같습니다 (하지만, 그냥 고통이 방법으로 작업을 수행합니다).
기타 참고 : 여기서 DAC와 POCO는 완전히 자신감을 가지고 사용하지 않기 때문에 더 좋을 수도 있습니다.
ObjectDataSource를 +의 GridView : DAC에서
<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>
니펫
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 코드와 거의 비슷하게 보입니다. 절대로 쉬지 않았어. –
@ JesseC.Slicer - ASP.NET WinForms? 그것은 깔끔한 트릭 일 것입니다. –
@ M.Babcock 두뇌보다 빠르게 움직이는 손가락. 물론 WEBforms. –