我有一个SharePoint列表,其中包含我最初从SQL中的表中填充的100个项目。现在,我想更新那些已更改的项目并添加新项目。如何根据该列表中的列更新项目?非常感谢任何帮助。
这是我最初添加项目的方式:
Microsoft.SharePoint.Client.List oList_Donors = context.Web.Lists.GetByTitle("XYZ");
ListItemCreationInformation itemCreateInfo = new ListItemCreationInformation();
using (OdbcConnection connection = new OdbcConnection())
{
connection.ConnectionString = "dsn=abc;uid=efg;pwd=hij;DataSource=klm";
connection.ConnectionTimeout = 100;
connection.Open();
OdbcCommand command_abc = new OdbcCommand("Select * From vw_SP_abc_efg", connection);
try
{
using (OdbcDataReader reader = command_abc.ExecuteReader())
{
while (reader.Read())
{
var obj0 = reader.GetValue(48);
var obj1 = reader.GetValue(0);
var obj2 = reader.GetValue(33);
var obj3 = reader.GetValue(47);
var obj4 = reader.GetValue(42);
var obj5 = reader.GetValue(42);
ListItem oListItem_abc = oList_abc.AddItem(itemCreateInfo);
oListItem_abc["Title"] = (obj0 == null || obj0.Equals(DBNull.Value)) ? "" : reader.GetString(48).ToString();
oListItem_abc["abc_x0020_ID"] = (obj1 == null || obj1.Equals(DBNull.Value)) ? "" : reader.GetString(0).ToString();
oListItem_abc["Excluded_x0020_By"] = (obj2 == null || obj2.Equals(DBNull.Value)) ? "" : reader.GetString(33).ToString();
oListItem_abc["Excluded_x0020_On"] = (obj3 == null || obj3.Equals(DBNull.Value)) ? "" : reader.GetDateTime(47).ToString("MM/dd/yyyy");
oListItem_abc["Reason"] = (obj4 == null || obj4.Equals(DBNull.Value)) ? "" : reader.GetString(42).Substring(50, reader.GetString(42).ToString().Length - 50);
oListItem_abc["Publish"] = (obj5 == null || obj5.Equals(DBNull.Value)) ? "" : reader.GetString(42).Substring(50, reader.GetString(42).ToString().Length - 50);
oListItem_abc.Update();
context.ExecuteQuery();
}
}
}
catch (Exception exception)
{
Console.WriteLine("The Error is:" + exception);
Console.ReadLine();
}
}
答案 0 :(得分:0)
首先,我会像你已经做的那样进行数据库查询。之后,您将获得数据库项目的ID和所有其他信息(例如时间戳,其他字段,......)。在阅读器/循环中使用此项目,我将为每个数据库项目创建一个caml查询,您可以根据数据库ID为您的共享点列出过滤器。然后你会得到一个Listitem。我没有,然后从db项目列表中创建新项目。
如果您获得了Listitem,则可以将sharepoint项的字段与reader对象的db字段进行比较。
如果有任何差异,您可以更新listitem。
但要小心,在包含许多项目的sharepoint列表上进行此类操作非常昂贵(时间)并且运行时间很长。