SharePoint:SPGridview控件分页

139 篇文章 1 订阅

MOSS里面的SPGridview控件功能还是比较强大的,可以实现丰富的分页,分组,排序,筛选功能,但更为强大的是针对每一项数据,可以实现下拉菜单的功能。今天用到了它简单的分页功能,虽然简单但是由于他的特殊性(和gridview分页的实现方式不一样),这里记录下供大家参考。

  首先SPGridview是继承自Gridview的一个控件,拥有Gridview的所有功能(但实现方式不一样),并对其扩展。

  这些控件的数据源非常丰富,可以是数据库,datatable,xml文件,或者是ObjectDataSource对象,这里分别讲下简单的SPGridview和Gridview分页实现方式,当然也可以手动的去写分页(结合存储过程每页需要多少条数据,取多少条数据,这种方法一般针对性能要求很高的大型数据的分页查询)。

Gridview分页实现方式很简单,步骤如下:

1:设置属性

AllowPaging= " True " PageSize= " 1 "

2:实现事件

protected void GridView1_PageIndexChanging( object sender, GridViewPageEventArgs e)
{
this.GridView1.PageIndex = e.NewPageIndex;
this.GridView1.DataBind();
}

当然还得指定数据源了

protected void Page_Load( object sender, EventArgs e)
{
this.GridView1.DataSource = GetEnterpriseInfo();
this.GridView1.DataBind();
}

public DataTable GetEnterpriseInfo()
{
DataTable enterpriseInfo = new DataTable();

// SPSite site = SPContext.Current.Site;
SPSite site = new SPSite( " http://moss:10000 ");

SPList list = site.RootWeb.Lists[ " 员工通讯录 "];

if (list == null)
{
return null;
}

SPListItemCollection items;

SPQuery query = new SPQuery();
string queryStr = @"
<Where>
<IsNotNull>
<FieldRef Name='SerialNumber' />
</IsNotNull>
</Where>
";
query.Query = queryStr;
items = list.GetItems(query);

enterpriseInfo = items.GetDataTable();

return enterpriseInfo;
}

而SPGridview的分页实现不会那么智能,需要手动实现的部分更多,而且一定需要在Sharepoint的环境下运行,否则分页的效果不会出现

1:设置属性

AllowPaging= " true " PageSize= " 1 "

2:引用SPGridViewPager控件

<CC:SPGridViewPager ID= " sppager " runat= " server " GridViewId= " SPGridView1 ">
</CC:SPGridViewPager>

前台代码如下:

代码
<%@ Page Language= " C# " MasterPageFile= " ~/Application.master " AutoEventWireup= " true "
CodeFile= " DXMobileNumber.aspx.cs " Inherits= " DXMobileNumber " Title= " 短信平台-员工通讯录 " %>

<%@ Register Assembly= " Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c "
Namespace= " Microsoft.SharePoint.WebControls " TagPrefix= " CC " %>
<asp:Content ID= " Content1 " ContentPlaceHolderID= " PlaceHolderMain " runat= " Server ">
<style type= " text/css ">
.table_stroke
{
border-collapse: collapse;
}
.form-title
{
border: 1px solid # 969696;
background-color: #c51100;
height: 25px;
}
.form-title_font
{
font-size: medium;
font-family: " 微软雅黑 ";
font-weight: bold;
color: #ffffff;
}
.form-title_font1
{
font-size: medium;
font-family: " 微软雅黑 ";
font-weight: bold;
color: #f07400;
}
body
{
margin-top: 36px;
}
.form-title2
{
background-color: #f99131;
height: 20px;
font-family: " 宋体 ";
font-size: 12px;
font-weight: bold;
color: # 333333;
border-top: 1px solid # 969696;
border-right: 1px solid # 969696;
border-left: 1px solid # 969696;
}
.form-title3
{
border: 1px solid # 969696;
background: #ffc675;
border: 1px solid # 808080;
height: 28px;
font-family: " 微软雅黑 ";
font-size: 14px;
font-weight: bold;
color: # 333333;
text-align: center;
}
.form-label
{
background: #ffffff;
border: 1px solid # 808080;
height: 25px;
font-family: " 微软雅黑 ";
font-size: 14px;
color: # 333333;
text-align: center;
}
.form-body
{
background: #fcebb7;
border: 1px solid # 808080;
height: 25px;
font-family: " 微软雅黑 ";
font-size: 14px;
color: # 333333;
text-align: center;
}
.table_stroke1
{
border-collapse: collapse;
}
.table_stroke2
{
border: 1px solid #ffffff;
}
.table_bluebg3
{
background: #f9f9f9;
}
.form-button
{
font-size: 12px;
font-family: " 宋体 ";
color: # 000000;
width: 80px;
}
.form-input
{
font-size: 12px;
font-family: " 宋体 ";
color: # 000000;
border: 1px solid #c8c8c8;
background-image: url(blank.gif);
background-repeat: no-repeat;
background-position: right top;
height: 20px;
}
.form-input1
{
font-size: 12px;
font-family: " 宋体 ";
color: # 000000;
border: 1px solid #c8c8c8;
height: 20px;
}
.form-select
{
font-size: 12px;
font-family: " 宋体 ";
color: # 000000;
border: 1px solid #c8c8c8;
width: 140px;
height: 20px;
}
.form-select1
{
font-size: 12px;
font-family: " 微软雅黑 ";
color: # 000000;
border: 1px solid #c8c8c8;
width: 100px;
height: 20px;
}
</style>
<table width= " 978 " border= " 0 " align= " center " cellpadding= " 0 " cellspacing= " 0 " class= " table_stroke ">
<tr>
<td align= " center ">
<table width= " 100% " border= " 0 " cellspacing= " 0 " cellpadding= " 0 ">
<tr>
<td width= " 59% " align= " right " class= " form-title_font1 ">
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td>
<div id= " PrintContent ">
<style type= " text/css ">
.GridViewStyle a
{
color: #FFFFFF;
}
.form-title_font
{
font-size: medium;
font-family: " 微软雅黑 ";
font-weight: bold;
color: #ffffff;
}
.GridViewHeaderStyle th
{
border-left: 1px solid #EBE9ED;
border-right: 1px solid #EBE9ED;
}
.GridViewHeaderStyle
{
background-color: #5D7B9D;
font-weight: bold;
color: White;
}
.GridViewFooterStyle
{
background-color: #5D7B9D;
font-weight: bold;
color: White;
}
.GridViewRowStyle
{
background: #ffffff;
border: 1px solid # 808080;
height: 15px;
font-family: " 微软雅黑 ";
font-size: 14px;
color: # 333333;
text-align: center;
}
.GridViewAlternatingRowStyle
{
background: #fcebb7;
border: 1px solid # 808080;
height: 15px;
font-family: " 微软雅黑 ";
font-size: 14px;
color: # 333333;
text-align: center;
}
.GridViewRowStyle td, .GridViewAlternatingRowStyle td
{
border: 1px solid # 808080;
}
.GridViewSelectedRowStyle
{
background-color: #E2DED6;
font-weight: bold;
color: # 333333;
}
.GridViewPagerStyle
{
background-color: # 284775;
color: #FFFFFF;
}
.GridViewPagerStyle table /* to center the paging links */
{
margin: 0 auto 0 auto;
}
.ms-vh2 TABLE.ms-selectedtitle
{
border-top-style: none;
border-right-style: none;
border-left-style: none;
background-color: #ffffff;
border-bottom-style: none;
text-align: center;
}
.ms-vh2 TABLE.ms-unselectedtitle
{
height: 21px;
text-align: center;
}
.ms-vh2-nofilter A
{
font-family: " 微软雅黑 ";
font-size: 14px;
font-weight: bold;
color: # 333333;
text-align: center;
}
.ms-vh2
{
border: 1px solid # 969696;
background: #ffc675;
border: 1px solid # 808080;
height: 28px;
text-align: center;
}
.ms-vh2-nofilter
{
border: 1px solid # 969696;
background: #ffc675;
border: 1px solid # 808080;
height: 28px;
text-align: center;
}
.ms-vh2 A
{
text-align: center;
font-family: " 微软雅黑 ";
font-size: 14px;
color: # 333333;
}
.ms-vh2 A:hover
{
font-family: " 微软雅黑 ";
font-size: 14px;
color: # 333333;
text-align: center;
text-decoration: underline;
}
.ms-vh2-nofilter A:hover
{
font-family: " 微软雅黑 ";
font-size: 14px;
color: # 333333;
text-align: center;
text-decoration: underline;
}
.form-title2
{
background-color: #f99131;
height: 20px;
font-family: " 宋体 ";
font-size: 12px;
font-weight: bold;
color: # 333333;
border-top: 1px solid # 969696;
border-right: 1px solid # 969696;
border-left: 1px solid # 969696;
}
</style>
<table width= " 100% " border= " 0 " cellspacing= " 0 " cellpadding= " 0 ">
<tr>
<td align= " center " class= " form-title2 ">
<table width= " 100% " border= " 0 " cellspacing= " 0 " cellpadding= " 0 ">
<tr>
<td width= " 59% " align= " center " class= " form-title_font ">
<asp:Label ID= " Year " runat= " server " Text= " 员工通讯录基本信息 "></asp:Label>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align= " center " class= " table_bluebg3 ">
<table width= " 100% " border= " 0 " cellpadding= " 2 " cellspacing= " 0 " class= " table_stroke1 ">
<tr>
<td>
<CC:SPGridView ID= " SPGridView1 " GridLines= " Both " runat= " server " AutoGenerateColumns= " False "
AllowPaging= " true " PageSize= " 1 ">
<FooterStyle CssClass= " GridViewFooterStyle " />
<RowStyle CssClass= " GridViewRowStyle " />
<SelectedRowStyle CssClass= " GridViewSelectedRowStyle " />
<PagerStyle CssClass= " GridViewPagerStyle " />
<AlternatingRowStyle CssClass= " GridViewAlternatingRowStyle " />
<HeaderStyle ForeColor= " red " CssClass= " GridViewHeaderStyle " />
<Columns>
<asp:TemplateField HeaderText= " 序号 ">
<ItemTemplate>
<asp:Label ID= " Label1 " runat= " server "><%# Container.DataItemIndex + 1%></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<HeaderTemplate>
<a style= " color: Red ">选择</a>
</HeaderTemplate>
<ItemTemplate>
<input id= " checkSelect " runat= " server " type= " checkbox " value= ' <%# Eval("SerialNumber") %> ' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField= " Title " HeaderText= " 姓名 " />
<asp:BoundField DataField= " Company " HeaderText= " 公司名称 " />
<asp:BoundField DataField= " Rank " HeaderText= " 所属党支部 " />
<asp:BoundField DataField= " SerialNumber " HeaderText= " 手机号码 " />
</Columns>
</CC:SPGridView>
<CC:SPGridViewPager ID= " sppager " runat= " server " GridViewId= " SPGridView1 ">
</CC:SPGridViewPager>
</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<td style= " height: 25px; ">
</td>
</tr>
<tr>
<td align= " center " style= " font-size: 16px; color: #5b5a5a; line-height: 20px; font-family: 仿宋_GB2312 ">
<asp:Button ID= " btnSelection " runat= " server " Text= " 评选 " Width= " 83px " />
<asp:Button ID= " btnCancle " runat= " server " Text= " 返回 " Width= " 83px " />
</td>
</tr>
</table>
</asp:Content>

3:实现ObjectDataSource数据源

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

后台代码如下:

代码
using System;
using System.Collections;
using System.Configuration;
using System.Data;

using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

using Microsoft.SharePoint;
using System.Collections.Generic;
using Microsoft.SharePoint.WebControls;


public partial class DXMobileNumber : System.Web.UI.Page
{
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 = " GetEnterpriseInfo ";
Controls.Add(odsDataSource);
this.SPGridView1.DataSourceID = " ExampleSource ";
this.SPGridView1.DataBind();

}

public DataTable GetEnterpriseInfo()
{
DataTable enterpriseInfo = new DataTable();

// SPSite site = SPContext.Current.Site;
SPSite site = new SPSite( " http://moss:10000 ");

SPList list = site.RootWeb.Lists[ " 员工通讯录 "];

if (list == null)
{
return null;
}

SPListItemCollection items;

SPQuery query = new SPQuery();
string queryStr = @"
<Where>
<IsNotNull>
<FieldRef Name='SerialNumber' />
</IsNotNull>
</Where>
";
query.Query = queryStr;
items = list.GetItems(query);

enterpriseInfo = items.GetDataTable();

return enterpriseInfo;
}

}

最后给大家放个截图:


总结:MOSS里面的页面类型主要有两种,一种是Application page(存在_layouts目录),另外一种是内容页面类型(存在数据库中,在本地磁盘找不到实际的物理文件,可用sharepoint designer从数据库中映射出来查看并修改)。往往我们需要开发一些页面放到sharepoint平台中使用,而这个时候使用到的就是Application page,如上我们开发的一个从列表中检索数据到另外一个页面上,就是创建了一个Application页面,必须放在sharepoint环境中才能使用,因为里面使用到了一些控件,如spgridview,DateTimeControl控件等,如果要使用这些控件的某些特定功能,必须是放在sharepoint环境中,即_layouts目录下。

这个控件功能比较强大,继续学习中

新浪微博:jasondct

qq群 :212099235

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值