Как я могу получить значение SPListItem определенного поля, имя которого начинается с определенной строки?

Я довольно новичок в 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")));

Но я должен использовать конструктор 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 и так далее).

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

campoCorrente.GetFormattedValue(THE FIELD NAME STARTING WITH "COD");

0 ответов

Другие вопросы по тегам