设为首页 收藏本站
查看: 1172|回复: 0

[经验分享] 开发自定义字段类型 sharepoint

[复制链接]

尚未签到

发表于 2017-5-24 10:12:10 | 显示全部楼层 |阅读模式
  网上有好多类似的文章,但是他们写的注释太少了,我研究了一个星期才弄好。
  我也写写吧,希望对新接触的朋友有帮助。
  首先:写好一个xml文件
  <?xml version="1.0" encoding="utf-8" ?>
<FieldTypes>
<FieldType>
<Field Name="TypeName">PeopleSelector</Field>--类名
<Field Name="ParentType">Text</Field> --字段类型
<Field Name="TypeDisplayName">People Selector</Field>
<Field Name="TypeShortDescription">PictureTag</Field> --显示名称
<Field Name="UserCreatable">TRUE</Field>
<Field Name="FieldTypeClass">
RownSearch(命名空间).PictureSelector(要调用的类名), RownSearch(命名空间), Version=1.0.0.0, Culture=neutral, PublicKeyToken=1a47724c4e1447d0
</Field>
</FieldType>
</FieldTypes>
  类
  namespace RownSearch
{
//继承
class PeopleSelector : SPFieldText(必须继承)
{
public PeopleSelector(
SPFieldCollection fields, string fieldName) :
base(fields, fieldName) { }
  public PeopleSelector(
SPFieldCollection fields,
string typeName, string displayName) :
base(fields, typeName, displayName) { }
  //上面是必写的
//两种方式一种自定义用户控件
public override BaseFieldControl FieldRenderingControl
{
get
{
//转到定义页
BaseFieldControl fieldControl = new PictureSelector_Control();
fieldControl.FieldName = InternalName;
return fieldControl;
}
}
}
}
  namespace RownSearch
{
//必须继承BaseFieldControl
class PictureSelector_Control : BaseFieldControl
{
//自定义控件
protected TextBox Picture_TextBoxField;
protected HiddenField Picture_TextBoxFields;
protected Button Picture_Btn;
  //创建控件
protected override void CreateChildControls()
{
//在编辑和新增下显示
if (this.Field == null || this.ControlMode == SPControlMode.Display)
{
return;
}
base.CreateChildControls();
//从模版中获取控件
  Picture_TextBoxField = TemplateContainer.FindControl("Picture_TextBox") as TextBox;
//获取button
Picture_Btn = TemplateContainer.FindControl("btn_Picture") as Button;
}

//在显示模式下显示模版
//public override string DisplayTemplateName {
// get {
// return "";
// }
//}
//在默认模式下显示模版 //模版SharePoint:RenderingTemplate的id
protected override string DefaultTemplateName
{
get
{
return "Picture_FieldTemplate";//用户控件里SharePoint:RenderingTemplate的ID
}
}
//重写value
public override object Value
{
get
{
this.EnsureChildControls();
if (Picture_TextBoxField != null)
{
return Picture_TextBoxField.Text.ToString(); ;
}
else
{
return null;
}
}
set
{
this.EnsureChildControls();
if (Picture_TextBoxField != null)
{
Picture_TextBoxField.Text = (string)this.ItemFieldValue;
}
}
}
}
  用户控件
  <SharePoint:RenderingTemplate Id="TagTree_FieldTemplate" runat="server" >
<Template>
<script type="text/javascript">
function OpenToSearchPeople() {
var options = {
url: "/_layouts/showTagTree.aspx",
width: 600,
height: 480,
title: "标签",
dialogReturnValueCallback: TagTreeCloseCallback
};
SP.UI.ModalDialog.showModalDialog(options);
}
function TagTreeCloseCallback(result, value) {
debugger;
if (result == SP.UI.DialogResult.OK) {
var txtID = "ctl00_m_g_5a16be22_8c73_4a3f_a3ee_03fe2a571152_ff121_ctl00_ctl00_People_TextBox";
document.getElementById(txtID).value += value;
}
}
</script>
<asp:TextBox ID="People_TextBox" runat="server"/>
  <asp:Button ID="Button1" runat="server" OnClientClick="javascript:OpenToSearchPeople();return false;" Text="标签" />
</Template>
</SharePoint:RenderingTemplate>
  用户控件调一个模式化窗体,这个不是所有人都用的到的
  <asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
<script type="text/javascript">
  function btonTree_ClientClick() {
var treeTagBack = document.getElementById("<% =this.TreeTagHidden.ClientID %>").value;
  SP.UI.ModalDialog.commonModalDialogClose(SP.UI.DialogResult.OK, treeTagBack);
}
</script>
<asp:Button ID="BackTreeTag" runat="server" Text="确定" OnClientClick="javascript:btonTree_ClientClick();" />
<asp:TreeView ID="TreeView1" runat="server" ImageSet="Arrows" OnTreeNodeCheckChanged="TreeView1_TreeNodeCheckChanged" ShowCheckBoxes="All">
<ParentNodeStyle Font-Bold="False" />
<HoverNodeStyle Font-Underline="True" ForeColor="#5555DD" />
<SelectedNodeStyle Font-Underline="True" ForeColor="#5555DD" HorizontalPadding="0px" VerticalPadding="0px" />
<NodeStyle Font-Names="Tahoma" Font-Size="10pt" ForeColor="Black" HorizontalPadding="5px" NodeSpacing="0px" VerticalPadding="0px" />
</asp:TreeView>
  <asp:HiddenField ID="TreeTagHidden" runat="server"/>
</asp:Content>
  里面有不懂得请给我留言

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-380363-1-1.html 上篇帖子: sharepoint对象及其属性的使用(转) 下篇帖子: Adding CheckBoxes in SharePoint GridView (SPGridView)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表