如何检索名称以特定字符串开头的特定字段的SPListItem值?

时间:2019-02-01 14:51:28

标签: c# .net sharepoint sharepoint-2013 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中检索n个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 ,在另一个列表中鳕鱼饭,依此类推)。

如何在当前SharePoint列表中选择名称以 COD 开头的字段,其伪代码如下所示:

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

0 个答案:

没有答案