public void GetSetPhotos()
{
m_flickr = new Flickr(m_apiKey);
Photoset set = m_flickr.PhotosetsGetPhotos(ViewState["flickrPhotoSetId"].ToString());
Photo[] setPhotos;
m_photos = set.PhotoCollection;
}
public class FlickrDataSource:DataSourceControl
private FlickrDataSourceView m_view;
private Photo[] m_photos;
private Flickr m_flickr;
private string m_apiKey;
private string m_userName;
private string m_userId;
private string m_setId;
public string PhotoSetId
get
if (ViewState["flickrPhotoSetId"] !=null)
return ViewState["flickrPhotoSetId"].ToString();
else
return m_setId;
set { ViewState["flickrPhotoSetId"] = value;
m_setId = value;
public string UserName
get { return m_userName; }
set
{ m_userName = value;
m_userId = m_flickr.PeopleFindByUsername(value).UserId;
public string ApiKey
get { return m_apiKey; }
set { m_apiKey = value; }
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public Photo[] Photos
get { return m_photos; }
set { m_photos = value; }
protected override DataSourceView GetView(string viewName)
if (m_view == null)
m_view = new FlickrDataSourceView(this, viewName);
return m_view;
namespace FlickrDataSource
class FlickrDataSourceView : DataSourceView
private FlickrDataSource m_owner;
internal FlickrDataSourceView(FlickrDataSource owner, string viewName)
: base(owner, viewName)
m_owner = owner;
protected override System.Collections.IEnumerable ExecuteSelect(DataSourceSelectArguments arguments)
m_owner.GetSetPhotos();
return m_owner.Photos;
public int PageSize
if (ViewState["flickrPageSize"] != null)
return (int)ViewState["flickrPageSize"];
return 0;
ViewState["flickrPageSize"] = value;
public int PageIndex
if (ViewState["flickrPageIndex"] != null)
return (int)ViewState["flickrPageIndex"];
ViewState["flickrPageIndex"] = value;
if (PageSize == 0)
return;
if (PageSize * PageIndex > set.PhotoCollection.Length || PageIndex<0)
setPhotos = new Photo[0];
if (PageIndex * PageSize + PageSize > set.PhotoCollection.Length)
setPhotos= new Photo[PageSize-((PageIndex * PageSize + PageSize)-set.PhotoCollection.Length)];
setPhotos = new Photo[PageSize];
for (int i=0;i<setPhotos.Length;i++)
setPhotos[i] = set.PhotoCollection[PageSize * PageIndex + i];
m_photos = setPhotos;