我使用以下代码更改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()方法已经设置位置为空值?不被接受吗?也许您需要两个单独的更新,一个用于清除位置,另一个用于更改其他值?