【问题标题】:google calendar api asp.net c# delete eventgoogle calendar api asp.net c# 删除事件
【发布时间】:2013-03-01 16:03:34
【问题描述】:

我有这个功能

 private static void DeleteEvent(CalendarService service, string pTitle,DateTime pDate)
    {
        FeedQuery query = new FeedQuery();
        query.Uri = new Uri("http://www.google.com/calendar/feeds/default/private/full");
        AtomFeed calFeed = service.Query(query);
        foreach (AtomEntry entry in calFeed.Entries)
        {
            if (pTitle.Equals(entry.Title.Text))
            {
                entry.Delete(); break;
            }
        }
    }

如何按标题和日期删除事件?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    这些可能会有所帮助:

    http://code.google.com/apis/calendar/data/2.0/developers_guide_dotnet.html#DeletingEvents
    http://code.google.com/apis/calendar/data/2.0/developers_guide_dotnet.html#RetrievingEvents

    我猜类似下面的方法可能会起作用:

    EventQuery query = new EventQuery("https://www.google.com/calendar/feeds/default/private/full");  
    query.StartDate = ...;
    query.EndDate = ...;
    EventFeed feed = service.Query(query);
    foreach (var entry in feed.Entries)
    {
        if (pTitle.Equals(entry.Title.Text))
        {
            entry.Delete(); break;
        }
    }
    

    【讨论】:

      【解决方案2】:

      虽然上述解决方案可行,但我会建议另一种方法。与其每次遍历所有事件并在找到时删除,不如让 Google 为您查找特定事件。可以通过以下方法使用ExtendedProperty 来完成

      1. 为您添加的每个事件分配一个 ID(与您在数据库中设置的相同)。
      2. 删除时,您将 ID 传递给删除并使用 Query 为您获取它
      3. 删除特定事件

      Google.GData.Calendar.EventEntry Entry = new Google.GData.Calendar.EventEntry();
      
      //create the ExtendedProperty and add the EventID in the new event object, 
      //so it can be deleted / updated later
      ExtendedProperty oExtendedProperty = new ExtendedProperty();
      oExtendedProperty.Name = "EventID";
      oExtendedProperty.Value = GoogleAppointmentObj.EventID;
      Entry.ExtensionElements.Add(oExtendedProperty);
      
      string ThisFeedUri = "http://www.google.com/calendar/feeds/" + CalendarID 
      + "/private/full";
      Uri postUri = new Uri(ThisFeedUri);
      
      //create an event query object and attach the EventID to it in Extraparameters
      EventQuery Query = new EventQuery(ThisFeedUri);
      Query.ExtraParameters = "extq=[EventID:" + GoogleAppointmentObj.EventID + "]";
      Query.Uri = postUri;
      
      //Find the event with the specific ID
      EventFeed calFeed = CalService.Query(Query);
      
      //if search contains result then delete
      if (calFeed != null && calFeed.Entries.Count > 0)
      {
         foreach (EventEntry SearchedEntry in calFeed.Entries)
         {
            SearchedEntry.Delete();
            break;
         }
      
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-09
        • 2018-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多