sharepoint gridview webpart

http://blog.csdn.net/dxfswpi/archive/2009/04/03/4046871.aspx

  
    
using System;
using System.Runtime.InteropServices;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using System.Xml;
using System.Data;
using System.Collections.Generic;
using System.Drawing;

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace GetUsersDataList
{
[Guid(
" d6e547b8-fdbd-4166-9b78-f73ff03c260a " )]
public class GetUsersListData : System.Web.UI.WebControls.WebParts.WebPart
{
// private GridView _gridview;
// private SqlDataSource _sqldatasource;

/// <summary>
/// 显示当前所在的SharePoint用户组
/// </summary>
///
private List < string > currentUserGroup = null ;

private SPSite site = null ;
private SPWeb web = null ;
private SPList list = null ;

/// <summary>
/// 保存GridView 数据源
/// </summary>
///
private DataTable _gvtable;
public DataTable GVTable
{
get
{
return _gvtable;
}
set
{
_gvtable
= value;
}
}

/// <summary>
/// 显示条目的GridView控件
/// </summary>
///
private GridView gridView = null ;

public SPSite SP_Site
{
get
{
return SPContext.Current.Site;
}
}

public SPWeb SP_Web
{
get
{
return SPContext.Current.Web;
}
}

/// <summary>
/// 请输入是否对显示条目启用目标访问群体控制,输入1为启用,输入2为禁用,格式形如:1
/// </summary>
///
private string _isAccessed = " 2 " ;

[Personalizable(PersonalizationScope.Shared), WebBrowsable(
true ), WebDisplayName( " 是否对显示条目启用目标访问群体控制 " ), WebDescription( " 请输入是否对显示条目启用目标访问群体控制,输入1为启用,输入2为禁用,格式形如:1 " )]
public string IsAccessed
{
get
{
return _isAccessed;
}
set
{
if (value.Equals( " 1 " ) || value.Equals( " 2 " ))
{
this ._isAccessed = value;
}
else
{
throw new Exception( " 请注意[是否对显示条目启用目标访问群体控制]的输入格式:\n输入1为启用,输入2为禁用 " );
}
}
}


private string _caml;
/// <summary>
/// 请输入Caml
/// </summary>
///
[Personalizable(PersonalizationScope.Shared), WebBrowsable( true ), WebDisplayName( " Caml " ), WebDescription( " 请输入Caml " )]
public string Caml
{
get
{
return _caml;
}
set
{
_caml
= value;
}
}

private string _siteName;
/// <summary>
/// 请输入网站集URL,格式形如: http://phosphor :8080/sites
/// </summary>
///
[Personalizable(PersonalizationScope.Shared), WebBrowsable( true ), WebDisplayName( " 网站集URL " ), WebDescription( " 请输入网站集URL,形式格式如:http://phosphor:8080/sites " )]
public string SiteName
{
get
{
return _siteName;
}
set
{
_siteName
= value;
}
}

private string _webName;
/// <summary>
/// 请输入网站URL,格式形式如:umbrella
/// </summary>
///
[Personalizable(PersonalizationScope.Shared), WebBrowsable( true ), WebDisplayName( " 网站URL " ), WebDescription( " 请输入网站URL,格式形式如:umbrella " )]
public string WebName
{
get
{
return _webName;
}
set
{
_webName
= value;
}
}

private string _listName;
/// <summary>
/// 请输入列表名称,格式形如:已发布动态
/// </summary>
///
[Personalizable(PersonalizationScope.Shared), WebBrowsable( true ), WebDisplayName( " 列表名称 " ), WebDescription( " 请输入列表名称,格式形式如:已发布动态 " )]
public string ListName
{
get
{
return _listName;
}
set
{
_listName
= value;
}
}

public string _itemCount;
/// <summary>
/// 请输入要显示的条目数量,格式形如:10
/// </summary>
///
[Personalizable(PersonalizationScope.Shared), WebBrowsable( true ), WebDisplayName( " 条目数量 " ), WebDescription( " 请输入要显示的条目数量,格式形式如:10 " )]
public string ItemCount
{
get
{
return _itemCount;
}
set
{
int count = 0 ;
if ( int .TryParse(value, out count) && count < 100 )
_itemCount
= value;
else
throw new Exception( " 请输入小于100的整数 " );
}
}

public GetUsersListData()
{
currentUserGroup
= new List < string > ();
this .ExportMode = WebPartExportMode.All;
}

/// <summary>
/// 获取当前用户所在的SharePoint组
/// </summary>
///
private void GetUserSPGroup()
{
SPGroupCollection groups
= SPContext.Current.Web.CurrentUser.Groups;
foreach (SPGroup group in groups)
{
currentUserGroup.Add(group.Name);
}
}

protected override void CreateChildControls()
{
// _gridview = new GridView();
// _gridview.ID = "gdv_User";
// _gridview.AutoGenerateColumns = true;
// _gridview.DataKeyNames = new string[] {"UserID"};
// CommandField field = new CommandField();
// _gridview.SelectedRowStyle.BackColor = Color.CadetBlue;
// field.ShowCancelButton = true;
// field.ShowDeleteButton = true;
// field.ShowEditButton = true;
// field.ShowHeader = true;
// field.ShowInsertButton = true;
// field.ShowSelectButton = true;
// _gridview.Columns.Add(field);

// _sqldatasource = new SqlDataSource();
// _sqldatasource.ID = "sqlDS_Users";
// _sqldatasource.ConnectionString = "server=PHOSPHOR;database=SharePoint_Config;uid=sa;pwd=Sa123456";

// _gridview.DataSource = _sqldatasource.ID;

// this.Controls.Add(_sqldatasource);
// this.Controls.Add(_gridview);

_siteName
= " http://phosphor:8080 " ;
_webName
= " umbrella " ;
_itemCount
= " 10 " ;
_listName
= " 联系人 " ;

GetUserSPGroup();

gridView
= new GridView();
if ( ! string .IsNullOrEmpty(SiteName) && ! string .IsNullOrEmpty(WebName) && ! string .IsNullOrEmpty(ListName) && ! string .IsNullOrEmpty(ItemCount))
using (site = new SPSite(SPContext.Current.Site.ID))
{
using (web = site.OpenWeb(SPContext.Current.Web.ID))
{
list
= web.Lists[ListName];
SPQuery query
= new SPQuery();
// query.ViewFields="<FieldRef Name='Title' />";

int count = 0 ;
int .TryParse(ItemCount, out count);
query.RowLimit
= ( uint )count;
if (IsAccessed.Equals( " 1 " ))
{
if (currentUserGroup.Count > 0 )
{
query.Query
= @" <OrderBy>
<FieldRef Name='ID' Ascending='False' />
</OrderBy>
" ;
}
else
return ;
}
else
{
query.Query
= @" <OrderBy>
<FieldRef Name='ID' Ascending='true' />
</OrderBy>
" ;
}

SPListItemCollection items
= web.Lists[ListName].Items;

string tempStr = "" ;


DataTable dt
= new DataTable();
dt.Columns.Add(
new DataColumn( " 姓氏 " , typeof ( string )));
dt.Columns.Add(
new DataColumn( " 名字 " , typeof ( string )));
dt.Columns.Add(
new DataColumn( " 公司 " , typeof ( string )));
dt.Columns.Add(
new DataColumn( " 商务电话 " , typeof ( string )));
dt.Columns.Add(
new DataColumn( " 住宅电话 " , typeof ( string )));
dt.Columns.Add(
new DataColumn( " 邮件地址 " , typeof ( string )));
dt.Columns.Add(
new DataColumn( " 联系人代号 " , typeof ( int )));


// region 查询出类表中字段的内部名称(InternalName)
foreach (SPField field in list.Fields)
{
tempStr
= tempStr + " / " + field.ToString() + " : " + field.InternalName.ToString();
}
// endregion

foreach (SPListItem item in items)
{
DataRow dr
= dt.NewRow();
dr[
" 姓氏 " ] = item.GetFormattedValue( " Title " );
dr[
" 名字 " ] = item.GetFormattedValue( " FirstName " );
dr[
" 公司 " ] = item.GetFormattedValue( " Company " );
dr[
" 商务电话 " ] = item.GetFormattedValue( " WorkPhone " );
dr[
" 住宅电话 " ] = item.GetFormattedValue( " HomePhone " );
dr[
" 邮件地址 " ] = item.GetFormattedValue( " Email " );
dr[
" 联系人代号 " ] = item.GetFormattedValue( " _x8054__x7cfb__x4eba__x4ee3__x53 " );
dt.Rows.Add(dr);
}
// 设置ID
gridView.ID = " gridView " ;

gridView.Columns.Clear();
// 禁止自动生成列
gridView.AutoGenerateColumns = false ;

// 允许排序、分页
gridView.AllowSorting = true ;
gridView.AllowPaging
= true ;

// 设置一些样式
gridView.BackColor = Color.FromArgb( 0xDE , 0xBA , 0x84 );
gridView.BorderColor
= Color.FromArgb( 0xDE , 0xBA , 0x84 );
gridView.BorderStyle
= BorderStyle.None;
gridView.BorderWidth
= new Unit( " 1px " );
gridView.CellPadding
= 3 ;
gridView.CellSpacing
= 3 ;
gridView.DataKeyNames
= new string [] { " 联系人代号 " };

// 设置一些样式
gridView.RowStyle.BackColor = Color.FromArgb( 0xFF , 0xF7 , 0xE7 );
gridView.RowStyle.ForeColor
= Color.FromArgb( 0x8C , 0x45 , 0x10 );
gridView.SelectedRowStyle.BackColor
= Color.FromArgb( 0x73 , 0x8A , 0x9C );
gridView.SelectedRowStyle.Font.Bold
= true ;
gridView.SelectedRowStyle.ForeColor
= Color.White;
gridView.PagerStyle.ForeColor
= Color.FromArgb( 0x8C , 0x45 , 0x10 ) ;
gridView.PagerStyle.HorizontalAlign
= HorizontalAlign.Center;
gridView.HeaderStyle.BackColor
= Color.FromArgb( 0xA5 , 0x51 , 0x29 );
gridView.HeaderStyle.Font.Bold
= true ;
gridView.HeaderStyle.ForeColor
= Color.White;

// 添加一个编辑事件
gridView.RowEditing += new GridViewEditEventHandler(gridView_RowEditing);

// 添加一个更新事件
gridView.RowUpdating += new GridViewUpdateEventHandler(gridView_RowUpdating);

// 添加一个取消事件
gridView.RowCancelingEdit += new GridViewCancelEditEventHandler(gridView_RowCancelingEdit);

// 添加一个命令列
CommandField cmdColumn = new CommandField();
cmdColumn.ShowDeleteButton
= true ;
cmdColumn.ShowEditButton
= true ;
cmdColumn.ShowSelectButton
= true ;
gridView.Columns.Add(cmdColumn);

// 添加一个绑定列
BoundField bndColumn = new BoundField();
bndColumn.DataField
= " 姓氏 " ;
bndColumn.HeaderText
= " 姓氏 " ;
bndColumn.InsertVisible
= false ;
bndColumn.ReadOnly
= true ;
bndColumn.SortExpression
= " 姓氏 " ;

gridView.Columns.Add(bndColumn);

// 重新定义
bndColumn = new BoundField();
bndColumn.DataField
= " 名字 " ;
bndColumn.HeaderText
= " 名字 " ;
bndColumn.SortExpression
= " 名字 " ;

gridView.Columns.Add(bndColumn);


// 重新定义
bndColumn = new BoundField();
bndColumn.DataField
= " 公司 " ;
bndColumn.HeaderText
= " 公司 " ;
bndColumn.SortExpression
= " 公司 " ;

gridView.Columns.Add(bndColumn);

// 重新定义
bndColumn = new BoundField();
bndColumn.DataField
= " 商务电话 " ;
bndColumn.HeaderText
= " 商务电话 " ;
bndColumn.SortExpression
= " 商务电话 " ;

gridView.Columns.Add(bndColumn);

// 重新定义
bndColumn = new BoundField();
bndColumn.DataField
= " 住宅电话 " ;
bndColumn.HeaderText
= " 住宅电话 " ;
bndColumn.SortExpression
= " 住宅电话 " ;

gridView.Columns.Add(bndColumn);

// 重新定义
bndColumn = new BoundField();
bndColumn.DataField
= " 邮件地址 " ;
bndColumn.HeaderText
= " 电子邮件地址 " ;
bndColumn.SortExpression
= " 邮件地址 " ;

gridView.Columns.Add(bndColumn);

// 重新定义
bndColumn = new BoundField();
// TextField txtColumn = new TextField();
// txtColumn.ID = "txt_Code";
// txtColumn.ListId = list.ID;
// txtColumn.FieldName = "联系人代号";
// gridView.Columns.Add(txtColumn);
bndColumn.DataField = " 联系人代号 " ;
bndColumn.HeaderText
= " 联系人代号 " ;
bndColumn.Visible
= false ;

gridView.Columns.Add(bndColumn);

// gridView.ShowFooter = true;
// gridView.ShowHeader = true;
// gridView.AutoGenerateDeleteButton = true;
// gridView.AutoGenerateEditButton = true;
// gridView.AutoGenerateSelectButton = true;
gridView.PageSize = 3 ;
gridView.PagerSettings.Mode
= PagerButtons.NumericFirstLast;
gridView.PagerSettings.PageButtonCount
= 5 ;
gridView.PagerSettings.Position
= PagerPosition.Bottom;

gridView.PageIndexChanging
+= new GridViewPageEventHandler(gridView_PageIndexChanging);
// gridView.RowDeleting += new GridViewDeleteEventHandler(gridView_RowDeleting);
// gridView.RowCreated += new GridViewRowEventHandler(gridView_RowCreated);

_gvtable
= dt;
// gridView.DataSource = dt;
// gridView.DataBind();
// DataBind(GVTable);
}
}
Controls.Add(gridView);
DataBind(GVTable);

base .CreateChildControls();
}

void gridView_RowCancelingEdit( object sender, GridViewCancelEditEventArgs e)
{
gridView.EditIndex
= - 1 ;
DataBind(GVTable);
}

void gridView_RowUpdating( object sender, GridViewUpdateEventArgs e)
{
int index = e.RowIndex;
// string code=gridView.Rows[index]
SPQuery query = new SPQuery();
query.Query
= @" <Where></Where> " ;

}

// void gridView_RowCreated(object sender, GridViewRowEventArgs e)
// {
// throw new Exception("The method or operation is not implemented.");
// }

void gridView_RowEditing( object sender, GridViewEditEventArgs e)
{
gridView.EditIndex
= e.NewEditIndex;
DataBind(GVTable);
}

// void gridView_RowDeleting(object sender, GridViewDeleteEventArgs e)
// {
// throw new Exception("The method or operation is not implemented.");
// }

private void DataBind(DataTable dt )
{
try
{
this .gridView.DataSource = dt;
this .gridView.DataBind();
}
catch (Exception ex)
{
throw new Exception(ex.ToString());
}
}

void gridView_PageIndexChanging( object sender, GridViewPageEventArgs e)
{
gridView.PageIndex
= e.NewPageIndex;
// gridView.DataSource = GVTable;
// gridView.DataBind();
this .DataBind(GVTable);
}

protected override void Render(HtmlTextWriter writer)
{
// TODO: add custom rendering code here.
// writer.Write("Output HTML");
EnsureChildControls();
base .Render(writer);
}
}
}

 

你可能感兴趣的:(SharePoint)