先看看SPGridView能实现的效果:
1)分组,分页
SPGridview使用
2)下拉菜单
SPGridview使用
3)过滤
SPGridview使用
以上效果是不是跟系统的列表一模一样?

SPGridView继承于GrieView,拥有GridView的所有功能,并扩展了以上功能。

下面讲述SPGridView的两种用法:采用自定义数据源和采用WSS的列表作为数据源。

利用SPGridView显示自定义数据源

Step1:
新建一个页面,写入如下内容:
>
注意:
SPGridView不支持自动生成列,所以 一定要设置AutoGenerateColums为false。
SPGridView直接启用了分页,并且,页面放入一个SPGrieViewPager,来实现分页。
Step2:
在CodeFile里写一个提供测试数据的函数:
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

public DataTable GetDataTable()

Step3:
在Page_Load里写代码,加入ObjectDataSource控件,用这个控件来调用上面的GetDateTable函数。
SPGridview使用  ObjectDataSource odsDataSource = new ObjectDataSource();
SPGridview使用        odsDataSource.ID 
= "ExampleSource";
SPGridview使用        odsDataSource.TypeName 
= this.GetType().FullName + "," + this.GetType().Assembly.FullName;
SPGridview使用        odsDataSource.SelectMethod 
= "GetDataTable";
SPGridview使用        Controls.Add(odsDataSource);
有人可能要奇怪了,为什么要用ObjectDataSource来调用GetDataTable,直接给SPGridView的DataSource属性赋值不行吗?
答案是:可以的。但是,那样的话,你就不的不再写一些代码来处理SPGridView的过滤和排序事件 。而ObjectDataSource是可以自动来处理这些事件的。
Step4:继续在Page_Load写代码,设置SPGridView的过滤格式和过滤属性,如果不这样设置的话,过滤功能不会起效(这个设置可是我起早摸黑,用reflector看它的代码才发现的...)。
SPGridview使用   //{0}表示过滤值,{1}表示过滤字段值
SPGridview使用
        SPGridView1.FilteredDataSourcePropertyFormat = "{1}='{0}'";
SPGridview使用        SPGridView1.FilteredDataSourcePropertyName 
= "FilterExpression" ;    SPGridview使用
SPGridview使用        SPGridView1.EnableViewState 
= false;SPGridview使用
Step4:继续在Page_Load写代码,添加字段,并启用排序 :
SPGridview使用//添加字段
SPGridview使用
        SPBoundField col = new SPBoundField();
SPGridview使用        col.DataField 
= "Title";
SPGridview使用        col.SortExpression 
= "Title";
SPGridview使用        col.HeaderText 
= "Title";
SPGridview使用        SPGridView1.Columns.Add(col);
SPGridview使用
SPGridview使用        col 
= new SPBoundField();
SPGridview使用        col.DataField 
= "Author";
SPGridview使用        col.SortExpression 
= "Author";
SPGridview使用        col.HeaderText 
= "Author";
SPGridview使用        SPGridView1.Columns.Add(col);
SPGridview使用
SPGridview使用        col 
= new SPBoundField();
SPGridview使用        col.DataField 
= "Rating";
SPGridview使用        col.SortExpression 
= "Rating";
SPGridview使用        col.HeaderText 
= "Rating";
SPGridview使用        SPGridView1.Columns.Add(col);
SPGridview使用        SPGridView1.AllowSorting 
= true;
Step5:设置过滤字段:
SPGridView1.AllowFiltering = true;
SPGridview使用
SPGridView1.FilterDataFields 
= ",Author,Rating";
注意 :开始的列如果不启用过滤需要加 “,”。

Step6:继续在Page_Load写代码,设置分组:
SPGridview使用//设置分组
SPGridview使用
        SPGridView1.AllowGrouping = true;
SPGridview使用        SPGridView1.AllowGroupCollapse 
= true;
SPGridview使用        SPGridView1.GroupField 
= "Title";
SPGridview使用        SPGridView1.GroupDescriptionField 
= "Title";
SPGridview使用        SPGridView1.GroupFieldDisplayName 
= "分组:";
SPGridview使用
Step7:Continue...,添加一个有下拉菜单的字段:
SPGridview使用  //添加下拉菜单字段
SPGridview使用
        SPMenuField colMenu = new SPMenuField();
SPGridview使用        colMenu.HeaderText 
= "Presenter Name";
SPGridview使用        colMenu.TextFields 
= "Title";
SPGridview使用
SPGridview使用        
//指定关联的菜单ID
SPGridview使用
        colMenu.MenuTemplateId = "PresenterListMenu";
SPGridview使用        colMenu.NavigateUrlFields 
= "Title,Rating";
SPGridview使用        colMenu.NavigateUrlFormat 
= "do.aspx?p={0}&q={1}";
SPGridview使用        colMenu.TokenNameAndValueFields 
= "EDIT=Title,NAME=Rating";
SPGridview使用        colMenu.SortExpression 
= "Title";
SPGridview使用
SPGridview使用        
//菜单
SPGridview使用
        MenuTemplate presenterListMenu = new MenuTemplate();
SPGridview使用        presenterListMenu.ID 
= "PresenterListMenu";
SPGridview使用
SPGridview使用        
//菜单项
SPGridview使用
        MenuItemTemplate biogMenu = new MenuItemTemplate(
SPGridview使用            
"Read Biography""/_layouts/images/EawfNewUser.gif");
SPGridview使用        biogMenu.ClientOnClickNavigateUrl 
= "do.aspx?this=%EDIT%&that=%NAME%";
SPGridview使用        
//entry.ClientOnClickScript = "your javascript here";
SPGridview使用
        presenterListMenu.Controls.Add(biogMenu);
SPGridview使用
SPGridview使用        
//菜单项
SPGridview使用
        MenuItemTemplate broadcastMenu = new MenuItemTemplate(
SPGridview使用                
"Recent Broadcasts""/_layouts/images/ICWM.gif");
SPGridview使用        presenterListMenu.Controls.Add(broadcastMenu);
SPGridview使用
SPGridview使用        
//分割线
SPGridview使用
        MenuSeparatorTemplate sepMenu = new MenuSeparatorTemplate();
SPGridview使用        presenterListMenu.Controls.Add(sepMenu);
SPGridview使用
SPGridview使用        
//菜单项
SPGridview使用
        MenuItemTemplate favMenu = new MenuItemTemplate(
SPGridview使用               
"Add to Favorites""/_layouts/images/addtofavorites.gif");
SPGridview使用        presenterListMenu.Controls.Add(favMenu);
SPGridview使用
SPGridview使用        
this.Controls.Add(presenterListMenu);
SPGridview使用        SPGridView1.Columns.Add(colMenu);
Step8:绑定数据源:
SPGridview使用   //绑定数据源
SPGridview使用
        this.SPGridView1.DataSourceID = "ExampleSource";
SPGridview使用        
this.SPGridView1.DataBind();            
OK,可以看效果了~
注意:SPGridView一定要在WSS的环境中使用,所以各位做测试的时候需要把页面放到layouts中。
整个Page_Load的代码如下:
    }

利用SPGridView显示列表的数据

只要把数据源控件换成SPDataSource,然后利用SPDataSource连接相应的列表即可:
SPGridview使用        SPDataSource odsDataSource = new SPDataSource();
SPGridview使用        odsDataSource.ID 
= "ExampleSource";
SPGridview使用        Controls.Add(odsDataSource);
SPGridview使用        SPSite site 
= new SPSite("http://ssjin073:9032");
SPGridview使用        SPList list 
= site.RootWeb.GetListFromUrl("http://ssjin073:9032/Lists/List/AllItems.aspx");
SPGridview使用        odsDataSource.List 
= list;

整个Page_Load代码如下:
SPGridview使用 protected void Page_Load(object sender, EventArgs e)
    }
注意:此代码要正常运行,测试用的列表必须有标题和http://www.cnblogs.com/jianyi0115/archive/2008/04/03/1136816.html

相关文章:

  • 2022-02-16
  • 2021-05-31
  • 2022-01-19
  • 2022-12-23
  • 2021-06-10
  • 2022-01-15
猜你喜欢
  • 2021-09-15
  • 2021-07-21
  • 2021-07-12
  • 2021-07-09
  • 2021-10-22
相关资源
相似解决方案