人与人组自定义字段类型sharepoint

时间:2009-07-03 19:53:41

标签: sharepoint

我在sharepoint OOTB中创建了一个自定义字段类型,区别仅在于最终用户不需要检查名称,即我已将其替换为DropDownList。下拉列表表明没有。我在网站上提供的用户创建了一个继承自SPFieldUser的FieldClass和一个继承自UserField的FieldControlClass。它在所有条件下都能正常工作,例如,当我创建List或Document Libarary时,它会向我显示DropDownList 与各自的用户说好之后它为我创建了一个项目。我在FieldControlClass中重写了一个Value属性,如下所示,

public override object Value

{

    get
    {
        SPUserCollection userscollection = rootWeb.SiteUsers;
        //ddlInfoBox is a DropDownList to which I have Binded the collection of users in the form of string
        SPUser user = userscollection.Web.EnsureUser(this.ddlInfoBox.SelectedValue);
        SPFieldUserValue userval = new SPFieldUserValue(user.ParentWeb, user.ID, user.LoginName);

        return userval;
    }

    set
    {
        SPFieldUserValue userval = (SPFieldUserValue) this.ItemFieldValue;        
        this.ddlInfoBox.SelectedValue = userval.Lookupvalue;  //Here look up value is nothing but a Login name e.g In-Wai-Svr2\tjagtap
    }
}

由于上述属性,此当前ListItem的自定义字段值将存储为SPFieldUserValue,例如27#; In-Wai-Svr2 \ tjagtap。

主要问题在于,当这个特定的ListItem显示在列表页面视图中,例如AllItems.aspx或与之关联的自定义视图页面时,它显示了 数字为27作为FieldValue的HyperLink,文本为“In-Wai-Svr2 \ tjagtap”,PostBackURL为“/_layouts/userdisp.aspx?ID=27”。

当我编辑这个项目时,它会在下拉列表中选择相应的值,同时在查看此项目时,即在DispForm.aspx上,它也会显示超链接。我有 通过在createchildcontrol()方法中编写自定义逻辑来实现它,即如果它是New或Edit则使用ControlMode然后填充下拉列表,如果是Display,则获取ItemFieldValue类型将其转换为SPFieldUserValue并获取相应的lookupid和值以使其成为URL和显示HyperLink的文本。

我花了很多时间搜索并将HyperLink作为用户名,并在列表视图页面上输入了UserID(27)作为字符串的导航,例如AllItem.aspx,但是没有用,然后经过大量的研究我发现可能有一种方法可以通过使用字段类型定义xml文件来实现这种功能,其中有一个规定可以通过指定html代码来定义DisplayPatteren。但是这里有一个问题我怎样才能获得具有相应UserName的UserID(27),例如In-Wai-Svr2 \ tjagtap,以便制作像In-Wai-Svr2 \ tjagtap这样的锚标签来解决我的问题。我在DisplayPatteren下的开关的Default case语句中硬编码了这个锚标记,但是它显示AllItems.aspx上的字段值为 In-Wai-Svr2 \ tjagtap27,即xml文件中定义的值与字符串值(27)连接。

请帮我解决上面提到的2个问题。我真的需要尽快解决这个问题。

谢谢&问候, Tejas Jagtap

2 个答案:

答案 0 :(得分:0)

您是否尝试覆盖自定义字段类中的 GetFieldValueAsHtml()方法,或者可能是自定义字段控件类中的 RenderFieldForDisplay()方法。

答案 1 :(得分:0)

您可以使用User字段类型的DisplayPattern CAML吗?