用于asp.net的gmail日历分页
谁能告诉我如何在谷歌日历中实现事件列表的分页, 以下是我到目前为止为获取事件列表所做的工作,,, 在api的早期版本中,我使用了NUmberToRetrieve和StartIndex等过滤器选项,但在这里我没有看到这样的过滤器,我只看到了maxResult和PageToken。我没能弄清楚页面令牌是如何工作的,, 任何帮助我都将不胜感激, 先谢谢你用于asp.net的gmail日历分页,asp.net,google-calendar-api,Asp.net,Google Calendar Api,谁能告诉我如何在谷歌日历中实现事件列表的分页, 以下是我到目前为止为获取事件列表所做的工作,,, 在api的早期版本中,我使用了NUmberToRetrieve和StartIndex等过滤器选项,但在这里我没有看到这样的过滤器,我只看到了maxResult和PageToken。我没能弄清楚页面令牌是如何工作的,, 任何帮助我都将不胜感激, 先谢谢你 string serviceAccountEmail = "{someTExt}@developer.gserviceaccount.
string serviceAccountEmail = "{someTExt}@developer.gserviceaccount.com";
string filepath = HttpContext.Current.Server.MapPath("~/App_Data/Key.p12");
var certificate = new X509Certificate2(filepath, "notasecret",
X509KeyStorageFlags.Exportable);
var credential = new ServiceAccountCredential(new
ServiceAccountCredential.Initializer(serviceAccountEmail)
{
Scopes =
new[] { CalendarService.Scope.Calendar }
}.FromCertificate
(certificate));
BaseClientService.Initializer initializer = new
BaseClientService.Initializer();
initializer.HttpClientInitializer = credential;
initializer.ApplicationName = "Google Calendar Sample";
// CalendarService calservice = new CalendarService(initializer);
CalendarService _calservice;
string CalendarId = "yourcalenderId";
_calservice = new CalendarService(initializer);
var calendarEvents = new List<GenericEvent>();
try
{
EventsResource.ListRequest req = _calservice.Events.List(CalendarId);
req.TimeMin = new DateTime(2014,12,1); //Convert.ToDateTime(startDate);
req.TimeMax = new DateTime(2014, 12, 15);
req.SingleEvents = true;
// req.MaxResults = numberToRetrive;
req.OrderBy = EventsResource.ListRequest.OrderByEnum.StartTime;
Events events = req.Execute();
foreach (Event eventdata in events.Items)
{
if (eventdata.Start.DateTime != null)
{
if (eventdata.End.DateTime != null)
{
var item = new GenericEvent
{
Title = eventdata.Summary,
Contents = eventdata.Description,
Location = eventdata.Location,
StartTime = eventdata.Start.DateTime.Value,
EndTime = eventdata.End.DateTime.Value
};
calendarEvents.Add(item);
}
}
}
string serviceAccountEmail=“{someTExt}@developer.gserviceaccount.com”;
字符串filepath=HttpContext.Current.Server.MapPath(“~/App_Data/Key.p12”);
var certificate=new X509Certificate2(文件路径,“notasecret”,
X509keystrageFlags.可出口);
var凭证=新的ServiceAccountCredential(新的
ServiceAccountCredential.初始值设定项(serviceAccountEmail)
{
范围=
新[]{CalendarService.Scope.Calendar}
}.FromCertificate
(证书);
BaseClientService.Initializer初始值设定项=新建
BaseClientService.Initializer();
initializer.HttpClientInitializer=凭证;
initializer.ApplicationName=“谷歌日历样本”;
//CalendarService calservice=新的CalendarService(初始值设定项);
CalendarService\u calservice;
字符串CalendarId=“YourCalendarId”;
_calservice=新日历服务(初始值设定项);
var calendarEvents=新列表();
尝试
{
EventsResource.ListRequest req=\u calservice.Events.List(CalendarId);
req.TimeMin=new DateTime(2014,12,1);//Convert.ToDateTime(startDate);
req.TimeMax=新的日期时间(2014、12、15);
req.SingleEvents=true;
//req.MaxResults=numberToRetrieve;
req.OrderBy=EventsResource.ListRequest.OrderByEnum.StartTime;
Events=req.Execute();
foreach(events.Items中的事件数据)
{
if(eventdata.Start.DateTime!=null)
{
if(eventdata.End.DateTime!=null)
{
var item=新的GenericEvent
{
Title=eventdata.Summary,
Contents=eventdata.Description,
Location=eventdata.Location,
StartTime=eventdata.Start.DateTime.Value,
EndTime=eventdata.End.DateTime.Value
};
calendarEvents.Add(项目);
}
}
}
这有点棘手,基本上你需要设置request.PageToken=result.NextPageToken并再次发送请求
这些是我使用的方法。你可以在底部找到完整类的链接
public static Events list(CalendarService service, string id ,OptionalValues optionalValues)
{
var request = service.Events.List(id);
if (optionalValues == null)
{
request.MaxResults = 100;
}
else
{
request.MaxResults = optionalValues.MaxResults;
request.ShowDeleted = optionalValues.ShowDeleted;
}
return ProcessResults(request);
}
// Just loops though getting all the rows.
private static Events ProcessResults(EventsResource.ListRequest request)
{
try
{
Events result = request.Execute();
List<Event> allRows = new List<Event>();
//// Loop through until we arrive at an empty page
while (result.Items != null)
{
//Add the rows to the final list
allRows.AddRange(result.Items);
// We will know we are on the last page when the next page token is
// null.
// If this is the case, break.
if (result.NextPageToken == null)
{
break;
}
// Prepare the next page of results
request.PageToken = result.NextPageToken;
// Execute and process the next page request
result = request.Execute();
}
Events allData = result;
allData.Items = (List<Event>)allRows;
return allData;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return null;
}
}
公共静态事件列表(CalendarService服务、字符串id、OptionalValues OptionalValues)
{
var请求=service.Events.List(id);
如果(可选值==null)
{
request.MaxResults=100;
}
其他的
{
request.MaxResults=optionalValues.MaxResults;
request.showdeled=optionalValues.showdeled;
}
返回处理结果(请求);
}
//只是循环获取所有行。
私有静态事件ProcessResults(EventsResource.ListRequest请求)
{
尝试
{
事件结果=request.Execute();
List allRows=新列表();
////循环浏览,直到找到一个空白页
while(result.Items!=null)
{
//将行添加到最终列表中
allRows.AddRange(result.Items);
//当下一个页面标记被激活时,我们将知道我们在最后一个页面
//空。
//如果是这样的话,打破僵局。
if(result.NextPageToken==null)
{
打破
}
//准备下一页的结果
request.PageToken=result.NextPageToken;
//执行并处理下一页请求
结果=请求。执行();
}
事件allData=结果;
allData.Items=(列表)所有行;
返回所有数据;
}
捕获(例外情况除外)
{
控制台写入线(例如消息);
返回null;
}
}
代码从