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);
}
}
}

 

posted @ 2010-09-10 00:23  icedog  阅读(817)  评论(0编辑  收藏  举报