0
이 데이터 격자를 정렬하는 더 좋은 방법이 있습니까?GridView 정렬 - asp.net (sharepoint)에서 gridview 정렬을 수행하는 더 좋은 방법이 있습니까?
이것은 작동하지만 조금 재사용 할 수없는 것처럼 보입니다.
아이디어가 있거나 더 좋은 방법이 있으면 알려 주시기 바랍니다.
다음은 코드입니다. 아이디어가 있으면 알려주세요.
protected void grdPropMgrLeaseAgents_Sorting(object sender, GridViewSortEventArgs e)
{
string sortExpression = "A";
if (ViewState[e.SortExpression + "_sort"] != null)
{
sortExpression = ViewState[e.SortExpression + "_sort"].ToString();
}
List<Person> list = (List<Person>)ViewState["propertyManagersAndLeasingAgents"];
if (sortExpression == "A")
{
if (e.SortExpression == "EmpFullName") list.Sort((x, y) => string.Compare(x.EmpFullName, y.EmpFullName));
if (e.SortExpression == "FirstName") list.Sort((x, y) => string.Compare(x.FirstName, y.FirstName));
if (e.SortExpression == "LastName") list.Sort((x, y) => string.Compare(x.LastName, y.LastName));
if (e.SortExpression == "DepartmentName") list.Sort((x, y) => string.Compare(x.DepartmentName, y.DepartmentName));
if (e.SortExpression == "MarketName") list.Sort((x, y) => string.Compare(x.MarketName, y.MarketName));
if (e.SortExpression == "Title") list.Sort((x, y) => string.Compare(x.Title, y.Title));
if (e.SortExpression == "Roles") list.Sort((x, y) => string.Compare(x.Roles, y.Roles));
if (e.SortExpression == "CellPhone") list.Sort((x, y) => string.Compare(x.CellPhone, y.CellPhone));
if (e.SortExpression == "OfficePhone") list.Sort((x, y) => string.Compare(x.OfficePhone, y.OfficePhone));
if (e.SortExpression == "EmailAddress") list.Sort((x, y) => string.Compare(x.EmailAddress, y.EmailAddress));
if (e.SortExpression == "City") list.Sort((x, y) => string.Compare(x.City, y.City));
if (e.SortExpression == "State") list.Sort((x, y) => string.Compare(x.State, y.State));
if (e.SortExpression == "PropertyName") list.Sort((x, y) => string.Compare(x.PropertyName, y.PropertyName));
if (e.SortExpression == "PropertyStreet") list.Sort((x, y) => string.Compare(x.PropertyStreet, y.PropertyStreet));
if (e.SortExpression == "DisplayName") list.Sort((x, y) => string.Compare(x.DisplayName, y.DisplayName));
if (e.SortExpression == "ZipCode") list.Sort((x, y) => string.Compare(x.ZipCode, y.ZipCode));
}
else
{
if (e.SortExpression == "EmpFullName") list.Sort((y, x) => string.Compare(x.EmpFullName, y.EmpFullName));
if (e.SortExpression == "FirstName") list.Sort((y, x) => string.Compare(x.FirstName, y.FirstName));
if (e.SortExpression == "LastName") list.Sort((y, x) => string.Compare(x.LastName, y.LastName));
if (e.SortExpression == "DepartmentName") list.Sort((y, x) => string.Compare(x.DepartmentName, y.DepartmentName));
if (e.SortExpression == "MarketName") list.Sort((y, x) => string.Compare(x.MarketName, y.MarketName));
if (e.SortExpression == "Title") list.Sort((y, x) => string.Compare(x.Title, y.Title));
if (e.SortExpression == "Roles") list.Sort((y, x) => string.Compare(x.Roles, y.Roles));
if (e.SortExpression == "CellPhone") list.Sort((y, x) => string.Compare(x.CellPhone, y.CellPhone));
if (e.SortExpression == "OfficePhone") list.Sort((y, x) => string.Compare(x.OfficePhone, y.OfficePhone));
if (e.SortExpression == "EmailAddress") list.Sort((y, x) => string.Compare(x.EmailAddress, y.EmailAddress));
if (e.SortExpression == "City") list.Sort((y, x) => string.Compare(x.City, y.City));
if (e.SortExpression == "State") list.Sort((y, x) => string.Compare(x.State, y.State));
if (e.SortExpression == "PropertyName") list.Sort((y, x) => string.Compare(x.PropertyName, y.PropertyName));
if (e.SortExpression == "PropertyStreet") list.Sort((y, x) => string.Compare(x.PropertyStreet, y.PropertyStreet));
if (e.SortExpression == "DisplayName") list.Sort((y, x) => string.Compare(x.DisplayName, y.DisplayName));
if (e.SortExpression == "ZipCode") list.Sort((y, x) => string.Compare(x.ZipCode, y.ZipCode));
}
ViewState["propertyManagersAndLeasingAgents"] = list;
this.grdPropMgrLeaseAgents.DataSource = list;
this.grdPropMgrLeaseAgents.DataBind();
if (sortExpression == "A")
{
ViewState[e.SortExpression + "_sort"] = "D";
}
else
{
ViewState[e.SortExpression + "_sort"] = "A";
}
}
코드 쉐어 포인트에서 데이터를 데이터 바인딩하기 때문에 셰어 포인트 그리드 뷰를 사용하는 것이 좋지만 똑같은 방식으로 작동하지는 않습니다. 그것을 시도했지만 데이터 소스를 제거 할 때, 나는 뒤에 코드에서 내 자신을 연결했고 _sorting 메서드를 기대했기 때문에 작동하지 않았다. 그 다음 나는 같은 장소에서 나 자신을 발견했다. –
나는 코드 뒤에서도 데이터 바인딩을하고있다. linqDs_Selecting 이벤트를 살펴보십시오. 비즈니스 계층의 데이터를 바인딩하고 있습니다. LinqDataSource 컨트롤은 정렬, 페이징 및 필터링 만 처리합니다. 정말 사용하는 것이 좋습니다. 또 다른 방법은 SPGridView + ObjectDataSource + DataTable을 사용하는 것입니다. –
더 이상 비즈니스 계층에서 실행하는 예제가 있습니까? –