Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Silverlight不工作,使用客户端对象模型将项目添加到Sharepoint列表_Silverlight_Sharepoint 2010 - Fatal编程技术网

通过Silverlight不工作,使用客户端对象模型将项目添加到Sharepoint列表

通过Silverlight不工作,使用客户端对象模型将项目添加到Sharepoint列表,silverlight,sharepoint-2010,Silverlight,Sharepoint 2010,我花了很多时间在Silverlight access Sharepoint 2010问题上,使用了以下标准代码,但是onQueryFailed方法总是被击中。请帮忙,谢谢 ClientContext clientContext = new ClientContext(siteUrl); Web oWebsite = clientContext.Web; ListCollection collList = oWebsite.Lists;

我花了很多时间在Silverlight access Sharepoint 2010问题上,使用了以下标准代码,但是onQueryFailed方法总是被击中。请帮忙,谢谢

        ClientContext clientContext = new ClientContext(siteUrl);
        Web oWebsite = clientContext.Web;
        ListCollection collList = oWebsite.Lists;

        oList = clientContext.Web.Lists.GetByTitle("ClientList");

        ListItem oListItem = oList.AddItem(new ListItemCreationInformation());
        oListItem["Name"] = "John Doe";
        oListItem["Address"] = "123 main rd.";
        oListItem.Update();

        clientContext.Load(oList,list => list.Title);

        clientContext.ExecuteQueryAsync(onQuerySucceeded, onQueryFailed);
    }

    private void onQuerySucceeded(object sender, ClientRequestSucceededEventArgs args)
    {
        UpdateUIMethod updateUI = DisplayInfo;
        this.Dispatcher.BeginInvoke(updateUI);
    }

    private void DisplayInfo()
    {
        MyOutput.Text = "New item created in " + oList.Title;
    }

    private void onQueryFailed(object sender, ClientRequestSucceededEventArgs args)
    {
        MessageBox.Show("Failed");
    }
Field titleField = calendarList.Fields.GetByInternalNameOrTitle("Name");
Field addressField = calendarList.Fields.GetByInternalNameOrTitle("Address");

clientContext.Load(titleField);
clientContext.Load(addressField);
clientContext.ExecuteQuery();
oListItem[titleField.InternalName] = "John Doe";

您没有为新项目指定默认情况下不能为空的标题。尝试添加以下内容:

oListItem["Title"] = "My new item";
Field titleField = calendarList.Fields.GetByInternalNameOrTitle("Name");
Field addressField = calendarList.Fields.GetByInternalNameOrTitle("Address");

clientContext.Load(titleField);
clientContext.Load(addressField);
clientContext.ExecuteQuery();
oListItem[titleField.InternalName] = "John Doe";

“onQueryFailed”处理程序的签名错误。您需要使用“ClientRequestFailedEventArgs”作为第二个参数:

// Example from msdn:
private void onQueryFailed(object sender, ClientRequestFailedEventArgs args)
{
  MessageBox.Show("Request failed. " + args.Message + "\n" + args.StackTrace);
}
Field titleField = calendarList.Fields.GetByInternalNameOrTitle("Name");
Field addressField = calendarList.Fields.GetByInternalNameOrTitle("Address");

clientContext.Load(titleField);
clientContext.Load(addressField);
clientContext.ExecuteQuery();
oListItem[titleField.InternalName] = "John Doe";

如果这不是问题所在,您至少会看到真正的错误是什么。

可能已经很晚了,但我会这样做

        ClientContext clientContext = new ClientContext(siteUrl);
    Web oWebsite = clientContext.Web;
    ListCollection collList = oWebsite.Lists;

    var oList = clientContext.Web.Lists.GetByTitle("ClientList");

    ListItem oListItem = oList.AddItem(new ListItemCreationInformation());
    oListItem["Name"] = "John Doe";
    oListItem["Address"] = "123 main rd.";
    oListItem.Update();

    clientContext.Load(oList);


    clientContext.ExecuteQueryAsync(
              (s, e) =>
              Deployment.Current.Dispatcher.BeginInvoke(() => onQuerySucceeded(oListItem)),
              (s, e) =>
              Deployment.Current.Dispatcher.BeginInvoke(() => onQueryFailed(e.Message))
              );

}

private void onQuerySucceeded(ListItem item)
{
    MyOutput.Text = "New item created in " + item["Title"];
}

private void onQueryFailed(string error)
{
    MessageBox.Show(string.Format("Failed {0}",error));
}
Field titleField = calendarList.Fields.GetByInternalNameOrTitle("Name");
Field addressField = calendarList.Fields.GetByInternalNameOrTitle("Address");

clientContext.Load(titleField);
clientContext.Load(addressField);
clientContext.ExecuteQuery();
oListItem[titleField.InternalName] = "John Doe";

在客户机对象模型中,始终必须使用内部名称来访问列。 当您将标题列重命名为“Name”时,内部名称仍然是“Title”

Field titleField = calendarList.Fields.GetByInternalNameOrTitle("Name");
Field addressField = calendarList.Fields.GetByInternalNameOrTitle("Address");

clientContext.Load(titleField);
clientContext.Load(addressField);
clientContext.ExecuteQuery();
oListItem[titleField.InternalName] = "John Doe";
您可以这样做:

Field titleField = calendarList.Fields.GetByInternalNameOrTitle("Name");
Field addressField = calendarList.Fields.GetByInternalNameOrTitle("Address");

clientContext.Load(titleField);
clientContext.Load(addressField);
clientContext.ExecuteQuery();
oListItem[titleField.InternalName] = "John Doe";

谢谢阿方索!但这不是原因:我把“头衔”改名为“名字”,而“头衔”实际上是我的“名字”。