2011-04-30 171 views
1

我用下面的代码改变谷歌日历事件的位置API结算活动地点:谷歌日历

EventEntry eventEntry = this.GetGoogleEvent(EVT,CAL);

​​

它工作正常,改变位置,但是当NEWLOCATION是一个空字符串没有被更新:""

什么解决办法?这是一个API错误?

感谢您的建议!

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

回答

1

如果您调用Locations.Clear(),然后更新(),您将发送一个PUT请求,但不包含任何gd:where元素。更新请求只更新请求中指定的那些字段,所以事件的gd:where元素将不受影响。

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

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

那家是造成空GD库中的错误:其中在更新请求被忽略的valueString元素。这个bug在几分钟前被修复了。图书馆的1113:

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

0

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

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

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

+0

1.我已经调试此代码,如果条件是与正确=“”(是的,我是新来的C#,使用“”从惯例) 2!是的,我认为这样,Locations.Clear()更新位置为空 - 但不是!为此我在这里问... 3.两个更新?也许...我会试一试 – ijavid 2011-04-30 22:25:31