网站开发太简单了框架,代刷网站系统怎么做,淘客怎么样做网站,在过没wordpress火吗首先创建一个abstract类#xff0c;继承Microsoft.SharePoint.WebControls.DataTableDataSourceView。之后基于这个类可以创建多个显示不同数据的的DataSourceView#xff0c;在上文的DataSource控件中有个ViewName属性#xff0c;可以通过这个属性来区分不同的DataSourceVi…首先创建一个abstract类继承Microsoft.SharePoint.WebControls.DataTableDataSourceView。之后基于这个类可以创建多个显示不同数据的的DataSourceView在上文的DataSource控件中有个ViewName属性可以通过这个属性来区分不同的DataSourceView从而显示不同的数据。 abstract DataSourceView的实现 Code public string Filter { get { if (ViewState[Filter] null) { return ; } return ViewState[Filter].ToString(); } set { ViewState[Filter] value; } } public string FilterExpression { get { if (mFilterExpression null) { return ; } return mFilterExpression; } set { Filter value; if (this.FilterExpression ! value) { this.mFilterExpression value; this.OnDataSourceViewChanged(EventArgs.Empty); } } } Filter用来记录过滤条件SPGridView通过FilterExpression将界面上用户点击的过滤条件传入这个属性中。 之后在继承这个DataSourceView的子类中实现排序和过滤的功能。而分页是通过SharePoint的一个SPGridViewPager绑定这个SPGridView控件就可实现我就不介绍了。 DataSourceView子类的实现 Codepublic class ACFrontEndDataSourceView : ACDataSourceView { private static readonly string[] mColumnNames new string[] { Name, Status, Address }; public ACFrontEndDataSourceView(DataSourceControl owner, string viewName, HttpContext context) : base(owner, viewName, context) { } protected override void FillDataTable(DataTable table, DataSourceSelectArguments selectArguments) { try { bool isDesc false; string sort Name; if (!String.IsNullOrEmpty(this.SortField)) { sort this.SortField; isDesc this.SortDir.Equals(DESC); } else if (selectArguments.SortExpression ! null selectArguments.SortExpression ! String.Empty) { sort selectArguments.SortExpression; if (selectArguments.SortExpression.EndsWith(DESC)) { isDesc true; sort sort.Substring(0, sort.IndexOf(DESC)).Trim(); } } int count 0; ArrayList serverList new ArrayList(); if (IsFilter) { //获取所需填充的全部数据 } else { //获取Count值表示根据Filter过滤条件的条目个数 //根据Filter过滤条件获取所有条目列表serverList for (int i 0; i this.PageIndex; i) { for (int j 0; j this.PageSize; j) { table.Rows.Add(table.NewRow()); } } } foreach (object server in serverList) { DataRow row table.NewRow(); row[0] ; row[1] ; row[2] ; table.Rows.Add(row); } if (!IsFilter) { for (int i 0; i count - (this.PageIndex 1) * this.PageSize; i) { table.Rows.Add(table.NewRow()); } } } catch(Exception ex) { throw ex; } } protected override IEnumerable Select(DataSourceSelectArguments selectArguments) { DataTable table this.CreateDataTable(); this.FillDataTable(table, selectArguments); DataView defaultView table.DefaultView; return defaultView; } protected override string[] ColumnNames { get { return mColumnNames; } } protected override string DefaultSortExpression { get { return Name ASC; } } } 这样就可以实现SharePoint的过滤与排序功能并且在DataTable中填充需要显示的数据而不是全部。 然而SharePoint的过滤仍然不很让人满意因为只能有一个过滤条件。如何实现SharePoint的多条件过滤呢通过使用Reflector对SPGridView的源代码进行查看我发现SharePoint SPGridView只能实现单过滤条件而且不能在界面出现过滤图标。如何实现多过滤将在之后的文章中进行介绍。 转载于:https://www.cnblogs.com/wangzhiyang/archive/2009/02/02/1382511.html