GridView排序-是否有更好的方法在asp.net(适用于sharepoint)中执行GridView排序?
有没有更好的方法对这个数据网格进行排序 这确实有效,但是它似乎有点不可重用 如果你有任何想法,或更好的方法来处理这个问题,请让我知道 下面是代码。如果你有什么想法,请告诉我GridView排序-是否有更好的方法在asp.net(适用于sharepoint)中执行GridView排序?,asp.net,sharepoint-2010,Asp.net,Sharepoint 2010,有没有更好的方法对这个数据网格进行排序 这确实有效,但是它似乎有点不可重用 如果你有任何想法,或更好的方法来处理这个问题,请让我知道 下面是代码。如果你有什么想法,请告诉我 protected void grdPropMgrLeaseAgents_Sorting(object sender, GridViewSortEventArgs e) { string sortExpression = "A"; if (ViewState[e.SortEx
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";
}
}
受保护的无效grdPropMgrLeaseAgents\u排序(对象发送方、GridViewSortEventArgs e)
{
字符串sortExpression=“A”;
if(ViewState[e.SortExpression+“_sort”]!=null)
{
sortExpression=ViewState[e.sortExpression+“_sort”].ToString();
}
列表=(列表)视图状态[“PropertyManager和LeasingAgent”];
如果(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==“mobile”)list.Sort((x,y)=>string.Compare(x.mobile,y.mobile));
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));
}
其他的
{
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==“mobile”)list.Sort((y,x)=>string.Compare(x.mobile,y.mobile));
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[“PropertyManager和LeasingAgent”]=列表;
this.grdpropmgrleagents.DataSource=list;
this.grdpropmgrleagents.DataBind();
如果(sortExpression==“A”)
{
视图状态[e.SortExpression+“_sort”]=“D”;
}
其他的
{
ViewState[e.SortExpression+“_sort”]=“A”;
}
}
您是否尝试过SPGridView。我使用了SPGridView和LinqDataSource。所有的功能(排序、分页、过滤)都已完成
以下是一个例子:-
A.精神景观
<SharePoint:SPGridView runat="server" ID="spgvUserTrainingLists" AutoGenerateColumns="false"
DataSourceID="linqDsEmployeeTrainingLists" DataKeyNames="RowId" OnRowDataBound="spgvUserTrainingLists_RowDataBound"
AllowSorting="true" AllowPaging="true" PageSize="15" AllowFiltering="true" FilteredDataSourcePropertyName="Where"
FilteredDataSourcePropertyFormat='{1} == "{0}"' FilterDataFields=",TrainingType,,Trainer,Status">
<Columns>
<SharePoint:SPBoundField HeaderText="Ref #" SortExpression="RefNo" DataField="RefNo" />
<SharePoint:SPBoundField HeaderText="Type" SortExpression="TrainingType" DataField="TrainingType" />
<asp:TemplateField HeaderText="Training" SortExpression="TrainingTitle">
<ItemTemplate>
<asp:HyperLink ID="hlTrainingDetail" runat="server" Text='<%# Eval("TrainingTitle") %>'
NavigateUrl="#" />
</ItemTemplate>
</asp:TemplateField>
<SharePoint:SPBoundField HeaderText="Trainer" SortExpression="Trainer" DataField="Trainer" />
<SharePoint:SPBoundField HeaderText="Status" SortExpression="Status" DataField="Status" />
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgDelete" ImageUrl="~/_layouts/images/DELITEM.GIF" runat="server"
UseSubmitBehaviour="false" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
No training yet.
</EmptyDataTemplate>
</SharePoint:SPGridView>
<SharePoint:SPGridViewPager ID="SPGridViewPager1" runat="server" GridViewId="spgvUserTrainingLists" />
<aspweb:LinqDataSource runat="server" ID="linqDsEmployeeTrainingLists" OnSelecting="linqDs_Selecting" />
尝试一下,因为您正在使用SharePoint。
希望这能有所帮助。尽管我很想使用sharepoint gridview,但它不会像以前那样工作,因为我正在从代码背后对数据进行数据绑定。我试过了,但是当我删除了数据源时,我把自己的代码挂在了后台,但它不起作用,因为它需要一种排序方法。然后我发现自己也在同一个地方。我也在从代码背后进行数据绑定。请看linqDs_选择事件。我正在绑定来自业务层的数据。LinqDataSource控件在那里处理排序、分页和筛选。我真的鼓励你使用它。另一种方法是使用SPGridView+ObjectDataSource+DataTable。您还有其他从业务层运行此功能的示例吗?您在寻找什么样的示例?。我在我的应用程序中使用了相同的技术,这是因为我的应用程序是一个数据驱动的应用程序。连接到BLL是在LinqDataSource选择事件中完成的。
protected void spgvUserTrainingLists_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.Header)
{
if (!string.IsNullOrEmpty(spgvUserTrainingLists.FilterFieldName))
{
for (int i = 0; i < spgvUserTrainingLists.Columns.Count; i++)
{
DataControlField field = spgvUserTrainingLists.Columns[i];
if (field.SortExpression == spgvUserTrainingLists.FilterFieldName)
{
Image filterIcon = new Image();
filterIcon.ImageUrl = "/_layouts/images/filter.gif";
filterIcon.Style[HtmlTextWriterStyle.MarginLeft] = "2px";
Literal headerText = new Literal();
headerText.Text = field.HeaderText;
PlaceHolder panel = new PlaceHolder();
panel.Controls.Add(headerText);
panel.Controls.Add(filterIcon);
e.Row.Cells[i].Controls[0].Controls.Add(panel);
break;
}
}
}
}
}
protected void linqDs_Selecting(object sender, LinqDataSourceSelectEventArgs e)
{
object parameter = null;
if (e.SelectParameters.TryGetValue("employee", out parameter))
{
e.Result = DefaultBLL.GetEmployeeTrainingLists(parameter.ToString());
}
}