Правильное отображаемое имя / поле для элемента списка в списке Sharepoint (с помощью веб-служб) - PullRequest
3 голосов
/ 23 июня 2010

Я создаю программу, которая использует веб-службы SharePoint для запроса и отображения списка Sharepoint для пользователя. Я могу показывать только один столбец за раз, поэтому мне нужно найти «столбец по умолчанию» или «отображаемый столбец» для отображения. Я знаю, что «Заголовок» обычно используется во многих типах контента, но я хочу, чтобы он был устойчивым к любому типу пользовательского типа контента или списка, поэтому я хотел бы найти какой-либо способ запроса списка для обнаружения этого поля.

Например: я использую SharePoint Manager 2010 здесь и смотрю на библиотеку ссылок (в которой нет поля заголовка), но каким-то образом он знает, что элемент списка называется 'http://google.com'. Как это вывести это? альтернативный текст http://www.adamburkepile.com/upload/splist.png

1 Ответ

2 голосов
/ 24 июня 2010

Похоже, что DisplayName имеет немного логики за этим.Вот код, который я получил, используя Reflector:

public string DisplayName
{
    get
    {
        if (!this.IsNew)
        {
            if ((!this.ParentList.AllowContentTypes && (this.ParentList.BaseType == SPBaseType.DocumentLibrary)) || (this.ParentList.AllowContentTypes && (this.ContentTypeId.IsNonDiscussionFolder || this.ContentTypeId.IsChildOf(SPBuiltInContentTypeId.Document))))
            {
                string str = (string) this.GetValue("BaseName", false);
                if (!string.IsNullOrEmpty(str))
                {
                    return SPHttpUtility.HtmlDecode(str);
                }
            }
            SPField fieldByInternalName = this.Fields.GetFieldByInternalName("Title", false);
            if (fieldByInternalName != null)
            {
                string fieldValueAsText = fieldByInternalName.GetFieldValueAsText(this.GetValue(fieldByInternalName, -1, false));
                if (!string.IsNullOrEmpty(fieldValueAsText))
                {
                    return fieldValueAsText;
                }
            }
            if (this.ParentList.AllowContentTypes)
            {
                if (this.ContentTypeId.IsChildOf(SPBuiltInContentTypeId.Link))
                {
                    SPFieldUrlValue value2 = new SPFieldUrlValue((string) this.GetValue("URL", false));
                    if (!string.IsNullOrEmpty(value2.Description))
                    {
                        return value2.Description;
                    }
                    if (!string.IsNullOrEmpty(value2.Url))
                    {
                        return value2.Url;
                    }
                }
                if (this.ContentTypeId.IsChildOf(SPBuiltInContentTypeId.Message))
                {
                    Guid discussionTitleLookup = SPBuiltInFieldId.DiscussionTitleLookup;
                    SPField fld = this.Fields[discussionTitleLookup];
                    string str3 = fld.GetFieldValueAsText(this.GetValue(fld, -1, false));
                    if (!string.IsNullOrEmpty(str3))
                    {
                        return str3;
                    }
                }
            }
            if (this.ParentList.BaseType != SPBaseType.Survey)
            {
                using (IEnumerator enumerator = this.Fields.GetEnumerator())
                {
                    SPField field3;
                    string str5;
                    while (enumerator.MoveNext())
                    {
                        field3 = (SPField) enumerator.Current;
                        if (field3.GetFieldBoolValue("TitleField"))
                        {
                            goto Label_00C6;
                        }
                    }
                    goto Label_016F;
                Label_00BB:
                    if (!(field3 is SPFieldMultiLineText))
                    {
                        return str5;
                    }
                    goto Label_00ED;
                Label_00C6:
                    str5 = field3.GetFieldValueAsText(this.GetValue(field3, -1, false));
                    if (string.IsNullOrEmpty(str5))
                    {
                        goto Label_016F;
                    }
                    goto Label_00BB;
                Label_00ED:
                    if (str5.Length <= 0xff)
                    {
                        return str5;
                    }
                    return str5.Substring(0, 0xff);
                }
            }
            SPContext context2 = SPContext.Current;
            if ((context2 == null) || (context2.FormContext.FormMode != SPControlMode.Edit))
            {
                return SPResource.GetString("ViewResponseTitle", new object[] { this.ID.ToString("N0", this.Web.Locale) });
            }
            return SPResource.GetString("ToolBarMenuRespondToSurvey", new object[0]);
        }
        SPContext current = SPContext.Current;
        if (this.ParentList.BaseType != SPBaseType.Survey)
        {
            if ((current != null) && current.FormContext.IsNonDiscussionFolder)
            {
                return SPResource.GetString("ButtonTextNewFolder", new object[0]);
            }
            return SPResource.GetString("NewFormTitleNewItem", new object[0]);
        }
        return SPResource.GetString("ToolBarMenuRespondToSurvey", new object[0]);
    Label_016F:
        return SPResource.GetString("NoTitle", new object[0]);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...