您的位置:首页 > 其它

sharepoint 自定义字段实现省市联动

2013-07-02 10:09 204 查看
最后实现效果如下:



设置栏如下:



解决方案结构如下:



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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: