0

我成功地创建了一个 Sharepoint 列表(名为“XMLToPDFTestList”),我可以通过“站点操作”>“查看所有站点内容”查看该列表,但迄今为止,我向列表中添加列的尝试被证明是徒劳的。

这是我尝试的方法:

private void ProvisionallyCreateList()
{
    SPWeb mySite = SPContext.Current.Web; 
    // Check to see if list already exists; if so, exit
    if (mySite.Lists.TryGetList(listTitle) != null) return;

    SPListCollection lists = mySite.Lists;
    SPListTemplateType listTemplateType = new SPListTemplateType();
    listTemplateType = SPListTemplateType.GenericList;
    string listDescription = "This list is to hold inputted vals";
    lists.Add(listTitle, listDescription, listTemplateType);

    // Now add a couple of columns
    SPList list = lists["XMLToPDFTestList"];
    string faveNum = list.Fields.Add("favoriteNumber", SPFieldType.Text, false);
    list.Fields[faveNum].Description = "favorite number";
    list.Fields[faveNum].Update();
    string faveCol = list.Fields.Add("favoriteColor", SPFieldType.Text, false);
    list.Fields[faveCol].Description = "favorite color";
    list.Fields[faveCol].Update();
}

这是我单击“XMLToPDFTestList”时看到的全部内容:

在此处输入图像描述

我的“直觉”是这一行:

SPList list = lists["XMLToPDFTestList"];

...不正确/不够具体。而不是“XMLToPDFTestList”,它应该是别的东西/前置的东西,左右。但是,究竟是什么?

4

1 回答 1

0

就像经常发生的那样,它是“我的坏”(YMMV?)。

问题出在我的列表项创建代码中,因为我没有为默认/继承的“标题”字段分配任何内容,所以在我看来(如上面的尖叫声)没有添加任何项目。

一旦我修复了代码,通过改变这个:

private void SaveInputToList()
{
    using (SPSite site = new SPSite(siteUrl))
    {
        using (SPWeb web = site.RootWeb)
        {
            SPList list = web.Lists[listTitle];
            SPListItem SPListItemFaveNum = list.Items.Add();
            SPListItemFaveNum["favoriteNumber"] = "7"; //inputtedNumber; TODO: Once 7 and teal are being saved and retrieved successfully, assign the var vals - will need to declare the controls created in CreateChildControls() globally
            SPListItemFaveNum.Update();
            SPListItem SPListItemFaveHue = list.Items.Add();
            SPListItemFaveHue["favoriteColor"] = "teal"; 
            SPListItemFaveHue.Update();
        }
    }
}

...对此:

private void SaveInputToList()
{
    using (SPSite site = new SPSite(siteUrl))
    {
        using (SPWeb web = site.RootWeb)
        {
            SPList list = web.Lists[listTitle];
            SPListItem spli = list.Items.Add();
            spli["Title"] = "Write the Title";
            spli["favoriteNumber"] = "7"; 
            //SPListItemFaveNum.Update();
            //SPListItem SPListItemFaveHue = list.Items.Add();
            spli["favoriteColor"] = "teal";
            //SPListItemFaveHue.Update();
            spli.Update();
        }
    }
}

...它工作正常:添加了所有三个值(标题、喜爱数字和喜爱颜色)的项目。

我假设该项目没有被创建,因为“标题”是空白的,我在每个 SPListItem 上调用更新,而我真正需要做的只是调用一次更新,并且在一个 SPListItem 上调用,而不是多个。

于 2015-03-30T17:39:26.997 回答