sharepoint 自定义字段实现省市联动
2013-07-02 10:09
204 查看
最后实现效果如下:
![](http://www.cnblogs.com/images/blogjava_net/jakin/111.jpg)
设置栏如下:
![](http://www.cnblogs.com/images/blogjava_net/jakin/222.jpg)
解决方案结构如下:
![](http://www.cnblogs.com/images/blogjava_net/jakin/333.jpg)
fldtypes_RoyCustomField.xml 内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<FieldTypes>
<FieldType>
<Field Name="TypeName">RoyCustomField</Field>
<Field Name="ParentType">Text</Field>
<Field Name="TypeDisplayName">RoyCustomField</Field>
<Field Name="TypeShortDescription">RoyCustomField</Field>
<Field Name="UserCreatable">TRUE</Field>
<Field Name="FieldTypeClass">RoyCustomField.RoyCustomField,$SharePoint.Project.AssemblyFullName$</Field>
</FieldType>
</FieldTypes>
RoyCustomField.cs 内容如下:
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Web.UI.WebControls;
using System.Web.UI;
using System;
namespace RoyCustomField
{
public class RoyCustomField : SPFieldText
{
public RoyCustomField(SPFieldCollection field, string strFieldName)
: base(field, strFieldName)
{
}
public RoyCustomField(SPFieldCollection field, string strFieldName, string strDispName)
: base(field, strFieldName, strDispName)
{
}
public override BaseFieldControl FieldRenderingControl
{
get
{
BaseFieldControl fc = new RoyText();
fc.FieldName = this.InternalName;
return fc;
}
}
}
public class RoyText : BaseFieldControl
{
private DropDownList _ddlProvince;
private DropDownList _ddlCity;
#region Province of autoPostBack
void Province_SelectedIndexChanged(object sender, EventArgs e)
{
_ddlCity.Items.Clear();
if (_ddlProvince.SelectedValue.ToString() == "河北省")
{
_ddlCity.Items.Add(new ListItem("石家庄市", "石家庄市"));
}
else if (_ddlProvince.SelectedValue.ToString() == "山东省")
{
_ddlCity.Items.Add(new ListItem("济南市", "济南市"));
}
else
{
_ddlCity.Items.Add(new ListItem("北京市", "北京市"));
}
}
#endregion
protected override void CreateChildControls()
{
base.CreateChildControls();
this.TemplateContainer.FindControl("_ddlProvince");
_ddlProvince = new DropDownList();
_ddlProvince.Items.Add(new ListItem("河北省", "河北省"));
_ddlProvince.Items.Add(new ListItem("山东省", "山东省"));
_ddlProvince.AutoPostBack = true;
_ddlProvince.SelectedIndexChanged += Province_SelectedIndexChanged;
this.Controls.Add(_ddlProvince);
this.Controls.Add(new LiteralControl(" - "));
this.TemplateContainer.FindControl("_ddlCity");
_ddlCity = new DropDownList();
_ddlCity.Items.Add(new ListItem("石家庄市", "石家庄市"));
_ddlCity.Items.Add(new ListItem("济南市", "济南市"));
this.Controls.Add(_ddlCity);
}
public override object Value
{
get
{
this.EnsureChildControls();
return _ddlProvince.Text+"-"+_ddlCity.Text;
}
set
{
string fv = (string)this.ItemFieldValue;
if (fv.Contains("-"))
{
string[] all = fv.Split('-');
_ddlProvince.Text = all[0];
_ddlCity.Text = all[1];
}
}
}
}
}
注意事项:
1.xml的文件名必须以fldtypes_开头,否则不能识别。
2.如果要设置默认值请Override DefaultValue,如果要验证格式是否正确请Override GetValidatedString。
本文参考:http://www.cnblogs.com/Roy_Cao/archive/2012/08/14/2637542.html
![](http://www.cnblogs.com/images/blogjava_net/jakin/111.jpg)
设置栏如下:
![](http://www.cnblogs.com/images/blogjava_net/jakin/222.jpg)
解决方案结构如下:
![](http://www.cnblogs.com/images/blogjava_net/jakin/333.jpg)
fldtypes_RoyCustomField.xml 内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<FieldTypes>
<FieldType>
<Field Name="TypeName">RoyCustomField</Field>
<Field Name="ParentType">Text</Field>
<Field Name="TypeDisplayName">RoyCustomField</Field>
<Field Name="TypeShortDescription">RoyCustomField</Field>
<Field Name="UserCreatable">TRUE</Field>
<Field Name="FieldTypeClass">RoyCustomField.RoyCustomField,$SharePoint.Project.AssemblyFullName$</Field>
</FieldType>
</FieldTypes>
RoyCustomField.cs 内容如下:
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using System.Web.UI.WebControls;
using System.Web.UI;
using System;
namespace RoyCustomField
{
public class RoyCustomField : SPFieldText
{
public RoyCustomField(SPFieldCollection field, string strFieldName)
: base(field, strFieldName)
{
}
public RoyCustomField(SPFieldCollection field, string strFieldName, string strDispName)
: base(field, strFieldName, strDispName)
{
}
public override BaseFieldControl FieldRenderingControl
{
get
{
BaseFieldControl fc = new RoyText();
fc.FieldName = this.InternalName;
return fc;
}
}
}
public class RoyText : BaseFieldControl
{
private DropDownList _ddlProvince;
private DropDownList _ddlCity;
#region Province of autoPostBack
void Province_SelectedIndexChanged(object sender, EventArgs e)
{
_ddlCity.Items.Clear();
if (_ddlProvince.SelectedValue.ToString() == "河北省")
{
_ddlCity.Items.Add(new ListItem("石家庄市", "石家庄市"));
}
else if (_ddlProvince.SelectedValue.ToString() == "山东省")
{
_ddlCity.Items.Add(new ListItem("济南市", "济南市"));
}
else
{
_ddlCity.Items.Add(new ListItem("北京市", "北京市"));
}
}
#endregion
protected override void CreateChildControls()
{
base.CreateChildControls();
this.TemplateContainer.FindControl("_ddlProvince");
_ddlProvince = new DropDownList();
_ddlProvince.Items.Add(new ListItem("河北省", "河北省"));
_ddlProvince.Items.Add(new ListItem("山东省", "山东省"));
_ddlProvince.AutoPostBack = true;
_ddlProvince.SelectedIndexChanged += Province_SelectedIndexChanged;
this.Controls.Add(_ddlProvince);
this.Controls.Add(new LiteralControl(" - "));
this.TemplateContainer.FindControl("_ddlCity");
_ddlCity = new DropDownList();
_ddlCity.Items.Add(new ListItem("石家庄市", "石家庄市"));
_ddlCity.Items.Add(new ListItem("济南市", "济南市"));
this.Controls.Add(_ddlCity);
}
public override object Value
{
get
{
this.EnsureChildControls();
return _ddlProvince.Text+"-"+_ddlCity.Text;
}
set
{
string fv = (string)this.ItemFieldValue;
if (fv.Contains("-"))
{
string[] all = fv.Split('-');
_ddlProvince.Text = all[0];
_ddlCity.Text = all[1];
}
}
}
}
}
注意事项:
1.xml的文件名必须以fldtypes_开头,否则不能识别。
2.如果要设置默认值请Override DefaultValue,如果要验证格式是否正确请Override GetValidatedString。
本文参考:http://www.cnblogs.com/Roy_Cao/archive/2012/08/14/2637542.html
相关文章推荐
- SharePoint 2010 自定义 字段 类型--------省市区联动
- 自定义Dialog实现从下往上出现(内容省市县三级联动)
- 转载:SharePoint 2010 自定义 字段 类型--------省市区联动
- SharePoint 2010 自定义 字段 类型--------省市区联动
- Infopath自定义表单实现列表字段联动
- SharePoint 2010 自定义 字段 类型--------省市区联动
- Infopath自定义表单实现列表字段联动
- Infopath自定义表单实现列表字段联动
- 通过自定义字段类型实现SharePoint列表的父子关系
- jQuery解析xml文件,使用get方法实现省市县三级联动下拉框
- 数据脱敏——基于Java自定义注解实现日志字段脱敏
- 使用Spinner实现省市三级联动
- 使用CascadingDropDown实现国家省市联动控件
- JQ实现省市联动及文档操作
- JavaScript二维数组实现的省市联动菜单
- 一步一步SharePoint 2007之四十三:实现自定义Workflow(2)——设置配置文件
- aop log4j mdc实现自定义字段存入数据库
- javascript解析xml实现省市县三级联动的方法
- 开发自定义字段类型 sharepoint
- msdn创建自定义 SharePoint 2010 字段类型