为什么我的 Sharepoint 列表内容没有保存到列表中?
Why aren't my Sharepoint List contents being saved to the list?
我成功创建了一个 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":
我的"gut feeling"是这一行:
SPList list = lists["XMLToPDFTestList"];
...right/not 不够具体。而不是 "XMLToPDFTestList" 它应该是 else/prepend 之类的东西。但是,究竟是什么?
通常情况下,"my bad"(YMMV?)。
问题出在我的列表项创建代码中,因为我没有为 default/inherited "Title" 字段分配任何内容,所以在我看来(如上面的尖叫声所示)没有添加项目。
一旦我修复了代码,通过改变这个:
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();
}
}
}
...它工作正常:一个项目添加了所有三个值(Title、favoriteNumber 和 favoriteColor)。
我假设项目没有被创建,因为 "Title" 是空白的,我在每个 SPListItem 上调用更新,而我真正需要做的是调用一次更新,在一个 SPListItem 上,不是多个。
我成功创建了一个 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":
我的"gut feeling"是这一行:
SPList list = lists["XMLToPDFTestList"];
...right/not 不够具体。而不是 "XMLToPDFTestList" 它应该是 else/prepend 之类的东西。但是,究竟是什么?
通常情况下,"my bad"(YMMV?)。
问题出在我的列表项创建代码中,因为我没有为 default/inherited "Title" 字段分配任何内容,所以在我看来(如上面的尖叫声所示)没有添加项目。
一旦我修复了代码,通过改变这个:
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();
}
}
}
...它工作正常:一个项目添加了所有三个值(Title、favoriteNumber 和 favoriteColor)。
我假设项目没有被创建,因为 "Title" 是空白的,我在每个 SPListItem 上调用更新,而我真正需要做的是调用一次更新,在一个 SPListItem 上,不是多个。