Как я могу получить значение SPListItem определенного поля, имя которого начинается с определенной строки? - PullRequest
0 голосов
/ 01 февраля 2019

Я довольно новичок в SharePoint (я использую SharePoint 2013) и вообще в среде .NET, и я нахожу следующие трудности.

В моем коде у меня есть этот метод, которыйотлично работает:

internal static Table CreaFormTabIndiciSceltaEtichetteFacoltative(List<EtichettaFacoltativaModel> etichetteFacoltativeList)
{
    SPWeb contextWeb = SPContext.Current.Web;

    Table table = new Table();
    table.CellPadding = 0;
    table.CellSpacing = 0;
    table.Width = Unit.Percentage(70);

    /*
     * Iterate on this list, for each element of this list exist a SharePoint list
     */
    foreach (EtichettaFacoltativaModel currentEntichetta in etichetteFacoltativeList)
    {
        Debug.WriteLine("TAB INDICI, etichetta facoltativa corrente: " + currentEntichetta.nomeLista);

        // Retrieve the SharePoint list related to the current object:
        SPList listaCampiOpzionaliEtichettaCorrente = contextWeb.Lists[currentEntichetta.nomeLista];

        TableRow row = new TableRow();
        TableCell cell = new TableCell();
        cell.Width = Unit.Percentage(30);
        cell.VerticalAlign = VerticalAlign.Top;
        cell.Attributes.Add("class", "ms-formlabel");

        cell.Controls.Add(new LiteralControl(currentEntichetta.nomeLista));
        cell.Font.Bold = true;
        row.Cells.Add(cell);


        DropDownList currentEtichettaDropDown = new DropDownList();
        currentEtichettaDropDown.CssClass = "chosen-select";
        currentEtichettaDropDown.ID = "dd";

        /*
         * Populate the current dropdown with the items in the current SharePoint list:
         */
        foreach (SPListItem campoCorrente in listaCampiOpzionaliEtichettaCorrente.Items)
        {
            currentEtichettaDropDown.Items.Add(new ListItem(campoCorrente.GetFormattedValue("Descrizione")));
        }

        cell = new TableCell();
        cell.Controls.Add(currentEtichettaDropDown);
        cell.Font.Bold = true;
        row.Cells.Add(cell);

        table.Rows.Add(row);

    }

    return table;

}

Как видите, я получаю список SharePoint из SharePoint.Для каждого из этих списков я создаю выпадающий элемент, содержащий элементы в текущем списке.Довольно просто.

Моя проблема в том, что в реальном случае использования мне не нужно использовать эту строку для заполнения раскрывающегося списка:

currentEtichettaDropDown.Items.Add(new ListItem(campoCorrente.GetFormattedValue("Descrizione")));

Но я должен использовать 2 параметра ListItem конструктор:

currentEtichettaDropDown.Items.Add(new ListItem(campoCorrente.GetFormattedValue("Descrizione"), campoCorrente.GetFormattedValue("COD_XXX")));

И здесь у меня большая проблема, потому что у меня есть разные списки SharePoint (представленные в этом примере различными SPListItem экземплярами.Каждый из этих списков SharePoint имеет другое имя для этого второго поля (поэтому я не могу сделать campoCorrente.GetFormattedValue ("field_name") , поскольку это зависит от конкретного текущего списка SharePoint.

Единственное, что я уверен, что все эти поля имеют имя, которое начинается со строки COD (поэтому в списке имя будет COD Commessa , в другом списке Cod Iniziativa и т. Д.)

Как выбрать поле с именем, начинающимся с COD в текущем списке SharePoint, в псевдокоде что-то вроде этого:

campoCorrente.GetFormattedValue(THE FIELD NAME STARTING WITH "COD");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...