先看看SPGridView能实现的效果:
1)分组,分页

2)下拉菜单

3)过滤

以上效果是不是跟系统的列表一模一样?

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

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

利用SPGridView显示自定义数据源

Step1:
新建一个页面,写入如下内容:

<%@ Page MasterPageFile="~/_layouts/application.master"   Language="C#" AutoEventWireup="true"  CodeFile="SPGridViewTest.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
    Namespace="Microsoft.SharePoint.WebControls" TagPrefix="cc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="PlaceHolderMain" runat="server">
        <cc1:SPGridView ID="SPGridView1" runat="server" AutoGenerateColumns="False" AllowPaging="True" PageSize="3" >
            <AlternatingRowStyle CssClass="ms-alternating" />
            <SelectedRowStyle CssClass="ms-selectednav" Font-Bold="True" />
        </cc1:SPGridView>
        <div style="text-align:center">
    <cc1:SPGridViewPager ID="SPGridViewPager1" runat="server" GridViewId="SPGridView1">    
    </cc1:SPGridViewPager></div>
 </asp:Content>

注意:
SPGridView不支持自动生成列,所以 一定要设置AutoGenerateColums为false。
SPGridView直接启用了分页,并且,页面放入一个SPGrieViewPager,来实现分页。
Step2:
在CodeFile里写一个提供测试数据的函数:

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

public DataTable GetDataTable()
    {
        DataTable tblData = new DataTable();
        tblData.Columns.Add("Title");
        tblData.Columns.Add("Author");
        tblData.Columns.Add("Rating");

        tblData.Rows.Add("Obsession", "Robards, Karen", 2);
        tblData.Rows.Add("Vanished", "Robards, Karen", 3);
        tblData.Rows.Add("Magician: Apprentice", "Feist, Raymong E.", 4);
        tblData.Rows.Add("Magician: Master", "Feist, Raymong E.", 5);
        tblData.Rows.Add("Silverthorn", "Feist, Raymong E.", 4);
        tblData.Rows.Add("Lord Foul's Bane", "Donaldson, Stephen R.", 3);
        tblData.Rows.Add("The Illearth War", "Donaldson, Stephen R.", 4);

        return tblData;
    }

Step3:
在Page_Load里写代码,加入ObjectDataSource控件,用这个控件来调用上面的GetDateTable函数。

  ObjectDataSource odsDataSource = new ObjectDataSource();
        odsDataSource.ID = "ExampleSource";
        odsDataSource.TypeName = this.GetType().FullName + "," + this.GetType().Assembly.FullName;
        odsDataSource.SelectMethod = "GetDataTable";
        Controls.Add(odsDataSource);

有人可能要奇怪了,为什么要用ObjectDataSource来调用GetDataTable,直接给SPGridView的DataSource属性赋值不行吗?
答案是:可以的。但是,那样的话,你就不的不再写一些代码来处理SPGridView的过滤和排序事件 。而ObjectDataSource是可以自动来处理这些事件的。
Step4:继续在Page_Load写代码,设置SPGridView的过滤格式和过滤属性,如果不这样设置的话,过滤功能不会起效(这个设置可是我起早摸黑,用reflector看它的代码才发现的...)。

   //{0}表示过滤值,{1}表示过滤字段值
        SPGridView1.FilteredDataSourcePropertyFormat = "{1}='{0}'";
        SPGridView1.FilteredDataSourcePropertyName = "FilterExpression" ;   
        SPGridView1.EnableViewState = false;

Step4:继续在Page_Load写代码,添加字段,并启用排序 :

//添加字段
        SPBoundField col = new SPBoundField();
        col.DataField = "Title";
        col.SortExpression = "Title";
        col.HeaderText = "Title";
        SPGridView1.Columns.Add(col);

        col = new SPBoundField();
        col.DataField = "Author";
        col.SortExpression = "Author";
        col.HeaderText = "Author";
        SPGridView1.Columns.Add(col);

        col = new SPBoundField();
        col.DataField = "Rating";
        col.SortExpression = "Rating";
        col.HeaderText = "Rating";
        SPGridView1.Columns.Add(col);
        SPGridView1.AllowSorting = true;

Step5:设置过滤字段:

SPGridView1.AllowFiltering = true;

SPGridView1.FilterDataFields = ",Author,Rating";

注意 :开始的列如果不启用过滤需要加 “,”。

Step6:继续在Page_Load写代码,设置分组:

//设置分组
        SPGridView1.AllowGrouping = true;
        SPGridView1.AllowGroupCollapse = true;
        SPGridView1.GroupField = "Title";
        SPGridView1.GroupDescriptionField = "Title";
        SPGridView1.GroupFieldDisplayName = "分组:";

Step7:Continue...,添加一个有下拉菜单的字段:

  //添加下拉菜单字段
        SPMenuField colMenu = new SPMenuField();
        colMenu.HeaderText = "Presenter Name";
        colMenu.TextFields = "Title";

        //指定关联的菜单ID
        colMenu.MenuTemplateId = "PresenterListMenu";
        colMenu.NavigateUrlFields = "Title,Rating";
        colMenu.NavigateUrlFormat = "do.aspx?p={0}&q={1}";
        colMenu.TokenNameAndValueFields = "EDIT=Title,NAME=Rating";
        colMenu.SortExpression = "Title";

        //菜单
        MenuTemplate presenterListMenu = new MenuTemplate();
        presenterListMenu.ID = "PresenterListMenu";

        //菜单项
        MenuItemTemplate biogMenu = new MenuItemTemplate(
            "Read Biography", "/_layouts/images/EawfNewUser.gif");
        biogMenu.ClientOnClickNavigateUrl = "do.aspx?this=%EDIT%&that=%NAME%";
        //entry.ClientOnClickScript = "your javascript here";
        presenterListMenu.Controls.Add(biogMenu);

        //菜单项
        MenuItemTemplate broadcastMenu = new MenuItemTemplate(
                "Recent Broadcasts", "/_layouts/images/ICWM.gif");
        presenterListMenu.Controls.Add(broadcastMenu);

        //分割线
        MenuSeparatorTemplate sepMenu = new MenuSeparatorTemplate();
        presenterListMenu.Controls.Add(sepMenu);

        //菜单项
        MenuItemTemplate favMenu = new MenuItemTemplate(
               "Add to Favorites", "/_layouts/images/addtofavorites.gif");
        presenterListMenu.Controls.Add(favMenu);

        this.Controls.Add(presenterListMenu);
        SPGridView1.Columns.Add(colMenu);

Step8:绑定数据源:

   //绑定数据源
        this.SPGridView1.DataSourceID = "ExampleSource";
        this.SPGridView1.DataBind();            

OK,可以看效果了~
注意:SPGridView一定要在WSS的环境中使用,所以各位做测试的时候需要把页面放到layouts中。
整个Page_Load的代码如下:

Page_Load
    protected void Page_Load(object sender, EventArgs e)
    {
        ObjectDataSource odsDataSource = new ObjectDataSource();
        odsDataSource.ID = "ExampleSource";
        odsDataSource.TypeName = this.GetType().FullName + "," + this.GetType().Assembly.FullName;
        odsDataSource.SelectMethod = "GetDataTable";
        Controls.Add(odsDataSource);

        //{0}表示过滤值,{1}表示过滤字段值
        SPGridView1.FilteredDataSourcePropertyFormat = "{1}='{0}'";
        SPGridView1.FilteredDataSourcePropertyName = "FilterExpression" ;    

        SPGridView1.EnableViewState = false;

        //添加字段
        SPBoundField col = new SPBoundField();
        col.DataField = "Title";
        col.SortExpression = "Title";
        col.HeaderText = "Title";
        SPGridView1.Columns.Add(col);

        col = new SPBoundField();
        col.DataField = "Author";
        col.SortExpression = "Author";
        col.HeaderText = "Author";
        SPGridView1.Columns.Add(col);

        col = new SPBoundField();
        col.DataField = "Rating";
        col.SortExpression = "Rating";
        col.HeaderText = "Rating";
        SPGridView1.Columns.Add(col);
        SPGridView1.AllowSorting = true;

        SPGridView1.AllowFiltering = true;

        SPGridView1.FilterDataFields = ",Author,Rating";

        //设置分组
        SPGridView1.AllowGrouping = true;
        SPGridView1.AllowGroupCollapse = true;
        SPGridView1.GroupField = "Title";
        SPGridView1.GroupDescriptionField = "Title";
        SPGridView1.GroupFieldDisplayName = "分组:";

        //添加下拉菜单字段
        SPMenuField colMenu = new SPMenuField();
        colMenu.HeaderText = "Presenter Name";
        colMenu.TextFields = "Title";

        //指定关联的菜单ID
        colMenu.MenuTemplateId = "PresenterListMenu";
        colMenu.NavigateUrlFields = "Title,Rating";
        colMenu.NavigateUrlFormat = "do.aspx?p={0}&q={1}";
        colMenu.TokenNameAndValueFields = "EDIT=Title,NAME=Rating";
        colMenu.SortExpression = "Title";

        //菜单
        MenuTemplate presenterListMenu = new MenuTemplate();
        presenterListMenu.ID = "PresenterListMenu";

        //菜单项
        MenuItemTemplate biogMenu = new MenuItemTemplate(
            "Read Biography", "/_layouts/images/EawfNewUser.gif");
        biogMenu.ClientOnClickNavigateUrl = "do.aspx?this=%EDIT%&that=%NAME%";
        //entry.ClientOnClickScript = "your javascript here";
        presenterListMenu.Controls.Add(biogMenu);

        //菜单项
        MenuItemTemplate broadcastMenu = new MenuItemTemplate(
                "Recent Broadcasts", "/_layouts/images/ICWM.gif");
        presenterListMenu.Controls.Add(broadcastMenu);

        //分割线
        MenuSeparatorTemplate sepMenu = new MenuSeparatorTemplate();
        presenterListMenu.Controls.Add(sepMenu);

        //菜单项
        MenuItemTemplate favMenu = new MenuItemTemplate(
               "Add to Favorites", "/_layouts/images/addtofavorites.gif");
        presenterListMenu.Controls.Add(favMenu);

        this.Controls.Add(presenterListMenu);
        SPGridView1.Columns.Add(colMenu);

        //绑定数据源
        this.SPGridView1.DataSourceID = "ExampleSource";
        this.SPGridView1.DataBind();             
    }

利用SPGridView显示列表的数据

只要把数据源控件换成SPDataSource,然后利用SPDataSource连接相应的列表即可:

        SPDataSource odsDataSource = new SPDataSource();
        odsDataSource.ID = "ExampleSource";
        Controls.Add(odsDataSource);
        SPSite site = new SPSite("http://ssjin073:9032");
        SPList list = site.RootWeb.GetListFromUrl("http://ssjin073:9032/Lists/List/AllItems.aspx");
        odsDataSource.List = list;

整个Page_Load代码如下:

 protected void Page_Load(object sender, EventArgs e)
    {
        SPDataSource odsDataSource = new SPDataSource();
        odsDataSource.ID = "ExampleSource";
        Controls.Add(odsDataSource);
        SPSite site = new SPSite("http://ssjin073:9032");
        SPList list = site.RootWeb.GetListFromUrl("http://ssjin073:9032/Lists/List/AllItems.aspx");
        odsDataSource.List = list;
        Response.Write(SPGridView1.FilterFieldName);

        SPGridView1.FilteredDataSourcePropertyFormat = "{1}='{0}'";
        SPGridView1.FilteredDataSourcePropertyName = "FilterExpression" ;    

        this.SPGridView1.AutoGenerateColumns = false;
        SPGridView1.EnableViewState = false;

        //添加字段
        SPBoundField col = new SPBoundField();
        col.DataField = "标题";
        col.SortExpression = "标题";
        col.HeaderText = "标题";
        SPGridView1.Columns.Add(col);

        col = new SPBoundField();
        col.DataField = "Origin";
        col.SortExpression = "Origin";
        col.HeaderText = "Origin";
        SPGridView1.Columns.Add(col);

        SPGridView1.AllowSorting = true;

        SPGridView1.AllowFiltering = true;

        SPGridView1.FilterDataFields = ",标题";

        //设置分组
        SPGridView1.AllowGrouping = true;
        SPGridView1.AllowGroupCollapse = true;
        SPGridView1.GroupField = "Origin";
        SPGridView1.GroupDescriptionField = "Origin";
        SPGridView1.GroupFieldDisplayName = "分组:";

        
        //添加下拉菜单字段
        SPMenuField colMenu = new SPMenuField();
        colMenu.HeaderText = "Presenter Name";
        colMenu.TextFields = "标题";

        //指定关联的菜单ID
        colMenu.MenuTemplateId = "PresenterListMenu";
        //colMenu.NavigateUrlFields = "标题";
       // colMenu.NavigateUrlFormat = "do.aspx?p={0}&q={1}";
        //colMenu.TokenNameAndValueFields = "EDIT=Title,NAME=Rating";
        //colMenu.SortExpression = "Title";

        //菜单
        MenuTemplate presenterListMenu = new MenuTemplate();
        presenterListMenu.ID = "PresenterListMenu";

        //菜单项
        MenuItemTemplate biogMenu = new MenuItemTemplate(
            "Read Biography", "/_layouts/images/EawfNewUser.gif");
        biogMenu.ClientOnClickNavigateUrl = "do.aspx?this=%EDIT%&that=%NAME%";
        //entry.ClientOnClickScript = "your javascript here";
        presenterListMenu.Controls.Add(biogMenu);

        //菜单项
        MenuItemTemplate broadcastMenu = new MenuItemTemplate(
                "Recent Broadcasts", "/_layouts/images/ICWM.gif");
        presenterListMenu.Controls.Add(broadcastMenu);

        //分割线
        MenuSeparatorTemplate sepMenu = new MenuSeparatorTemplate();
        presenterListMenu.Controls.Add(sepMenu);

        //菜单项
        MenuItemTemplate favMenu = new MenuItemTemplate(
               "Add to Favorites", "/_layouts/images/addtofavorites.gif");
        presenterListMenu.Controls.Add(favMenu);

        this.Controls.Add(presenterListMenu);
        SPGridView1.Columns.Add(colMenu);        
         

        //绑定数据源
        this.SPGridView1.DataSourceID = "ExampleSource";
        this.SPGridView1.DataBind();             
    }

注意:此代码要正常运行,测试用的列表必须有标题和Origin两个字段。
除了用代码给SPGridView添加字段,适应于GridView的一切手段都是可以应用到SPGridView的,
比如,你可以添加一个模板字段(TemplateFiled),模板内容当然可以按需控制了。

下载所有示例代码:http://files.cnblogs.com/jianyi0115/PageTest.rar

转载于:https://www.cnblogs.com/jianyi0115/archive/2008/04/03/1136816.html

强大的SPGridView相关推荐

  1. 《博客园精华集》Sharepoint+MOSS分册第2轮筛选结果文章列表

    <博客园精华集>Sharepoint+MOSS分册第2轮筛选结果文章列表 由我筛选完成,MOSS部分一共68篇,Sharepoint部分一共213篇 Sharepoint相对来说学习和使用 ...

  2. 《博客园精华集--Sharepoint分册》第三轮结果

    写在前面:    Sharepoint接触的人相对比较少,筛选下来感觉精华文章不多.对于本分册我准备采用入门.使用.开发.进阶的组织方式,当然如果大家认为不够精华有违精华集的宗旨的话,也可以将本分册拿 ...

  3. 窗口键 键位码_键盘上这些被冷落的键位居然有这么强大的功能

    各位小伙伴们大家好啊,又到了达尔优外设小课堂时间了,今天呢,我们将为大家带来的是键盘上的功能区按键小科普,也就是我们常说的F区按键. F区按键 F1~F12这个区域的按键我们通常称为功能键,而F的意思 ...

  4. iterm2 主题_【超级实用】Iterm2 + ohmyzsh 打造强大的终端编辑器

    作者:AndrewHR 地址:http://mrw.so/4D1n7B 最终的效果图如下所示:使用iterm2配合oh-my-zsh的命令行,拥有语法高亮.命令自动补全.自动提示符.显示git仓库状态 ...

  5. sklearn库安装_没有依赖库也能跑机器学习模型!推荐一个强大工具m2cgen

    晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI m2cgen(Model 2 Code Generator)是一个轻量级代码生成器,它可以将训练好的机器学习模型转换成无需依赖库的本地代码. ...

  6. linux java 构建工具有哪些,Linux ant --强大的Java开发构建工具

    用途说明 ant严格说来,ant其实并非原生的Linux命令,但它是一个使用广泛.功能强大的跨平台构建工具程序,尤其是进行Java开发时,许多开源的Java项目都使用ant作为构建工具.ant命令一般 ...

  7. 收藏功能_微信强大的收藏功能,你们用了吗?

    在中国说到即时聊天工具,就得说到微信和QQ了,他们都是腾讯旗下的产品,今天麦叔要和大家聊的是微信,去年官方数据显示微信用户已超过10亿,庞大用户群体在使用它,但它的一些功能并不是每个人都会知道,今天麦 ...

  8. java图片序列化_Java中的强大武器——对象的序列化

    原标题:Java中的强大武器--对象的序列化 所谓对象序列化就是将对象的状态转换成字节流,以后可以通过这些值再生成相同状态的对象.这个过程也可以通过网络实现,可以先在Windows机器上创建一个对象, ...

  9. android picasso源码下载,Picasso:一个专为Android制作的强大的图片下载和缓存库

    Picasso:一个专为Android打造的强大的图片下载和缓存库 简介 在Android应用中,图片消费了大量的资源,却为应用提供了很好的视觉体验.幸运的是,Picasso为你的应用提供了非常容易的 ...

最新文章

  1. ansible 发部署nginx以及更新、回滚
  2. 【 ML 】Steepest Descent Iteration Procedure of TOA - Based Positioning Simulation
  3. access 打印预览 代码_标签打印软件如何批量打印样品标签
  4. MFC多语言实现方法
  5. 3皮卡丘眨眼代码_活见久,皮卡丘居然是一门编程语言
  6. 迅速步入jQuery的殿堂
  7. 图的匹配问题与最大流问题(三)——最大流问题Ford-Fulkerson方法Java实现
  8. [ios开发]锁屏后的相机的方向检查,与图片的自动旋转
  9. kali2021安装RTL8188GU无线网卡[TL-WN726N]驱动
  10. python怎么输出roc曲线_如何用Python绘制ROC曲线
  11. 称重仪表显示ol怎么解决_称重仪表显示Erd和数字是怎么回事?
  12. 【Tips】如何批量安装和导出Python项目的依赖库?
  13. html中背景属性的缩写语法,CSS缩写
  14. Kali Linux安装dvwa本地shentou测试环境
  15. cdr文字内容显示不出来_电脑装的字体cdr里面不显示怎么办
  16. 常见的html转义字符
  17. sharepoint显示不正常_正常的吸气和呼吸、异常的呼气丨胸部HRCT表现
  18. java中强耦合是什么意思_什么是Java程序的耦合
  19. 【大数据分析专业毕设之基于python的手机销售大数据分析可视化系统】
  20. 六年级计算机课学什么意思,小学六年级信息技术教案

热门文章

  1. python工程师-Python工程师必看的面试问题与解答(中)
  2. python方向-Python发展的4个方向
  3. python各个解释器的用途-python的解释器是什么?
  4. python小程序-【Python精华】100个Python练手小程序
  5. python可以干什么-Python可以用来做什么 为你揭开python神秘面纱
  6. python3.8.5怎么用-python3.8 五分钟就可以入门
  7. python好找工作么-python和django掌握到什么水平才好找工作?
  8. python毕业设计论文-25 行 Python 代码毕业设计实现人脸识别
  9. python经典小游戏-用Python设计一个经典小游戏
  10. 在Ubuntu18.04上安装ros2的环境,ros2的常用命令:播放包、录制包等