转载:SharePoint 2010 自定义 字段 类型--------省市区联动
最近有几个朋友问到了有关自定义字段类型的问题,为了让更多的人了解自定义字段类型的方法,特写一篇博客与大家分享,首先看一下解决方案目录

创建自定义类型分以下几个步骤:
第一步:添加SharePoint映射文件夹Xml,在Xml的文件名必须以fldtypes_开头,否则不能识别,为了更好的了解Xml里面的结构我们可以在服务器上打开,看一看系统是如何定义的。

第二步:开始省市定义联动,XML定义


<?xml version="1.0" encoding="utf-8" ?>
<FieldTypes>
<FieldType>
<Field Name="TypeName">ProvinceCityArea</Field>
<Field Name="ParentType">Text</Field>
<Field Name="TypeDisplayName">Province City Area</Field>
<Field Name="TypeShortDescription">省市区联动</Field>
<Field Name="UserCreatable">TRUE</Field>
<Field Name="FieldTypeClass">
SharePointProject_Custom_FieldsType_Controls.Controls.ProvinceCityArea,
$SharePoint.Project.AssemblyFullName$
</Field>
</FieldType>
<FieldType>
<Field Name="TypeName">ProvinceCity</Field>
<Field Name="ParentType">Text</Field>
<Field Name="TypeDisplayName">Province City</Field>
<Field Name="TypeShortDescription">省市联动</Field>
<Field Name="UserCreatable">TRUE</Field>
<Field Name="FieldTypeClass">
SharePointProject_Custom_FieldsType_Controls.Controls.ProvinceCity,
$SharePoint.Project.AssemblyFullName$
</Field>
</FieldType>
</FieldTypes>
第三步:创建ProvinceCityControl 类文件,并继承 BaseFieldControl,省市的数据来源是另一张表

代码主要重载 protected override void CreateChildControls()

using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls; namespace SharePointProject_Custom_FieldsType_Controls.Controls
{
public class ProvinceCityControl : BaseFieldControl
{
private DropDownList _ddlProvince;
private DropDownList _ddlCity;
private SPWeb _web;
private SPListCollection _listCollection;
private SPList _list;
private SPQuery _query;
private SPListItemCollection _listItemCollection; protected override void CreateChildControls()
{
if (this.ControlMode == SPControlMode.Display)
{
this.Controls.Add(new LiteralControl("" + this.Value));
}
else
{
_ddlProvince = new DropDownList();
_ddlCity = new DropDownList();
using (_web = SPContext.Current.Web)
{
_listCollection = _web.Lists;
_list = _listCollection.TryGetList(Consts.LIST_DICTIONARY);
if (_list != null)
{
#region Province
_query = new SPQuery();
_query.Query = string.Concat(
"<Where>",
"<Eq><FieldRef Name='Group_x003a_Title'/><Value Type='Lookup'>" + Consts.GROUP_PROVINCE + "</Value></Eq>",
"</Where>"
);
_query.ViewFields = string.Concat(
"<FieldRef Name='DictionaryName'/>",
"<FieldRef Name='Title'/>"
);
_listItemCollection = _list.GetItems(_query);
_ddlProvince.AutoPostBack = true;
_ddlProvince.SelectedIndexChanged += new EventHandler(Province_SelectedIndexChanged);
foreach (SPListItem item in _listItemCollection)
{
_ddlProvince.Items.Add(new ListItem(item["DictionaryName"].ToString(), item["Title"].ToString()));
}
#endregion #region City
LoadCity();
#endregion } }
this.Controls.Add(_ddlProvince);
this.Controls.Add(new LiteralControl("-"));
this.Controls.Add(_ddlCity);
}
} #region Province of autoPostBack
void Province_SelectedIndexChanged(object sender,EventArgs e)
{
LoadCity();
}
#endregion #region Load City
void LoadCity()
{
_ddlCity.Items.Clear();
_query = new SPQuery();
_query.Query = string.Concat(
"<Where><And>",
"<Eq><FieldRef Name='Group_x003a_Title'/><Value Type='Lookup'>" + Consts.GROUP_CITY + "</Value></Eq>",
"<BeginsWith><FieldRef Name='Title'/><Value Type='Text'>" + _ddlProvince.SelectedValue.ToString() + "</Value></BeginsWith>",
"</And></Where>"
);
_listItemCollection = _list.GetItems(_query);
foreach (SPListItem item in _listItemCollection)
{
_ddlCity.Items.Add(new ListItem(item["DictionaryName"].ToString(), item["Title"].ToString()));
}
}
#endregion public override object Value
{
get
{
return base.Value;
}
set
{
base.Value = value;
}
}
}
}

第四步:再创建一个类ProvinceCity ,并继承SPFieldText

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls; namespace SharePointProject_Custom_FieldsType_Controls.Controls
{
public class ProvinceCity:SPFieldText
{
public ProvinceCity(SPFieldCollection fields, string fieldName) : base(fields, fieldName) { }
public ProvinceCity(SPFieldCollection fields, string fieldType, string displayName) : base(fields, fieldType, displayName) { } public override BaseFieldControl FieldRenderingControl
{
get
{
BaseFieldControl fc = new ProvinceCityControl();
fc.FieldName = this.InternalName;
return fc;
}
}
}
}

如果要设置默认值请Override DefaultValue,如果要验证格式是否正确 请Override GetValidatedString
第五步:部署查看效果

第六步:创建栏查看效果

就这么简单,完成了,快来试吧。
分类: SharePoint
转载:SharePoint 2010 自定义 字段 类型--------省市区联动的更多相关文章
- SharePoint 2010 自定义 字段 类型--------省市区联动
转:http://www.cnblogs.com/sp007/p/3384310.html 最近有几个朋友问到了有关自定义字段类型的问题,为了让更多的人了解自定义字段类型的方法,特写一篇博客与大家分享 ...
- [SharePoint 2010] 自定义字段类型开发(二)
在SharePoint 2010中实现View Action Button效果. http://www.sharepointblogs.be/blogs/vandest/archive/2008/06 ...
- sharepoint2010问卷调查(3)-实现问卷的开始和结束时间(采用自定义字段类型)
接着上面的图片调查,sharepoint自带的问卷调查是没有开始和结束时间的.这个在项目过程不太实用.问卷一般有开始和结束时间的.因此需要自己 动手开发一个自定义字段类型字段.如下图: 开发添加栏目会 ...
- 开发MOSS自定义字段类型
前段时间,由于刚好项目定制的需要,笔者就开发了几个自定义字段类型.在这抽空做个详细笔记,方便初学者学习.这方面的资料也很多,如果自身觉得不大明白可以参考下SDK和网上的相关文章.本章的目的主要是给新手 ...
- sharepoint2010问卷调查(2)-实现问卷的图片调查(采用自定义字段类型)
1. 首先建立个图片库上传图片 并建立文件夹1和2,1下有1.1文件夹,2下2.1文件夹,2.1下有文件夹2.1.1. 在1文件夹下放如下图片: 2.建立自定义字段类型,如下图: 3.部署后建立栏目的 ...
- SharePoint 2010 ——自定义上传页面与多文件上传解决方案
最近项目遇到一个很麻烦的问题,原以为很容易解决,结果搞了那么久,先开个头,再慢慢写 SharePoint 2010 ——自定义上传页面与多文件上传解决方案 1.创建Sharepoint空白项目,创建应 ...
- 转载-SharePoint 2010 WebPart与Google地图系列 一:创建显示地图的WebPart
[原] SharePoint 2010 WebPart与Google地图系列 一:创建显示地图的WebPart 摘要: 作为信息化先驱的产品SharePoint 2010竟然对GIS相关技术支持如此有 ...
- sharepoint 2010自定义访问日志列表设置移动终端否和客户端访问系统等计算列的公式
上个月本人开发和上线了一个在SharePoint 2010上基于HTML5的移动OA网站,后端服务采用自定义的基于AgilePoint工作流引擎的Sharepoint Web服务,前端主要采用Jque ...
- SharePoint 2010自定义母版页小技巧——JavaScript和CSS引用
通常在我们的项目中,都会涉及到母版页的定制.并且必不可少的,需要配合以一套自己的JavaScript框架和CSS样式.你有没有遇到过这样的情况呢,在开发环境和UAT时都还算顺利,但是当最终部署到生产服 ...
随机推荐
- pycharm 5 注册码
BIG3CLIK6F-eyJsaWNlbnNlSWQiOiJCSUczQ0xJSzZGIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...
- visual studio 2010 c++ 打印 Hello world
由于好奇心驱使温习下c高级简化语言语言(个人解释可能不太准确).下面用visual studio 2010 实现 HelloWord 打印 第一步:visual studio 2010 打开.文件-- ...
- python 基础 5.0 python类一般形式
一. 类的一般形式 创建类我们一般使用class 关键字来创建一个类,class 后面跟类型名字,可以自定义,最后以冒号结尾,如下所示: #/usr/bin/python #coding=utf- ...
- spring事务和mysql的隔离级别
mysql事务.mysql隔离级别.mysql锁.mysql数据一致性.Spring事务.Spring事务传播性之间的关系 一直有些模糊,整理一下. mysql事务: 在mysql中,只有使用了I ...
- 九度OJ 1146:Flipping Pancake(翻饼子) (递归、游戏)
时间限制:1 秒 内存限制:32 兆 特殊判题:是 提交:265 解决:116 题目描述: We start with a stack n of pancakes of distinct sizes. ...
- Coursera公开课Functional Programming Principles in Scala习题解答:Week 2
引言 OK.时间非常快又过去了一周.第一周有五一假期所以感觉时间绰绰有余,这周中间没有假期仅仅能靠晚上加周末的时间来消化,事实上还是有点紧张呢! 后来发现每堂课的视频还有相应的课件(Slide).字幕 ...
- Nginx Cache中$request_filename(转)
对于Nginx的$request_filename变量指的就是请求的资源路径.在原先 OpenCDN节点端配置里面是这样的. location ~ .*\.(png|html|htm|ico|jpg| ...
- 【windows】更改最大动态端口数
最近业务遇到一个奇怪的问题,一台iis服务器,居然报端口不足的错误,分析应该是服务器可用的动态端口数不够了,windows默认的动态端口范围为:1024-5000,也就是最多3977个动态端口可用,如 ...
- 超限学习机 (Extreme Learning Machine, ELM) 学习笔记 (一)
1. ELM 是什么 ELM的个人理解: 单隐层的前馈人工神经网络,特别之处在于训练权值的算法: 在单隐层的前馈神经网络中,输入层到隐藏层的权值根据某种分布随机赋予,当我们有了输入层到隐藏层的权值之后 ...
- yum 安装软件时出现 is this ok [y/d/n]
y下载安装 d只下载不安装 n不安装