Google Calendar API清除事件位置



我使用以下代码更改Google calendar事件的位置:

EventEntry EventEntry = this。卡尔GetGoogleEvent (evt);

   eventEntry.Title.Text = evt.Summary;
   eventEntry.Locations.Clear();
   if( NEWLOCATION != "" )  eventEntry.Locations.Add(new Where("", "", NEWLOCATION));
   ...
   EventEntry newEvent = (EventEntry)eventEntry.Update();

它工作得很好,用于更改位置,但当NEWLOCATION是空字符串时没有更新:""

解决方案吗?这是一个API bug ?

谢谢你的建议!

编辑:也试过没有if( NEWLOCATION != "" )

如果您调用Locations.Clear(),然后调用Update(),您将发送一个没有任何gd:where元素的PUT请求。更新请求只更新那些在请求中指定的字段,因此gd:其中的事件元素将保持不变。

如果要清除事件的gd:where字段,则必须发送包含单个gd:where元素的更新请求,该元素的值为空字符串。例如,您可以使用以下代码:

entry.Locations.Clear();
entry.Locations.Add(new Where());
entry.Update();

库中有一个错误,导致在更新请求期间忽略valueString元素的空gd:。这个错误几分钟前在库的rev. 1113中修复了:

http://code.google.com/p/google-gdata/source/detail?r=1113

对于初学者,我会比较空字符串:

if( NEWLOCATION != string.Empty )
{
  eventEntry.Locations.Add(new Where("", "", NEWLOCATION));
}

我也总是使用括号,只是为了确保我知道如果条件匹配,将执行什么。
至于空位置,我可能在这里根本是错误的,但不是位置。clear()方法已经设置位置为空值?不被接受吗?也许您需要两个单独的更新,一个用于清除位置,另一个用于更改其他值?

最新更新