Extending the PhotoGrid to allow Xml DataBinding using JavaScript Enumerations
Phani Raj
If you remember one of my previous posts about the PhotoGrid Control , we talked about the control binding to JSON data .
Today , we talk about using Enumerations in Javascript to allow the PhotoGrid to bind to multiple Data Source Types.
Well, lets get going then....
Constructing the Enumeration
/**** Enumeration to specify the Data Source Type**********/
1) The Constructor for the Enumeration
AtlasDemo.DataSourceType = function(){};
2) Define the different Types of data that can be bound using the Prototype Model .
AtlasDemo.DataSourceType.prototype = { JSON : 0, XMLString : 1 }
3) Register the Enumeration using the "registerEnum" function of the ASP.net AJAX framework.
AtlasDemo.DataSourceType.registerEnum("AtlasDemo.DataSourceType");
Modify the BindGrid Function to accept the type of dataBinding to be performed.
BindGrid : function(dataSourceType)
Using the Enumeration from the client application
as a parameter to the function BindGrid ,
function CreateGrid( JSONDataToBeBound ) { //Create an instance of the PhotoGrid Control var gridElement = new AtlasDemo.PhotoGrid( leftPosition , topPosition,"",0,"tblThumbnails",horizontalOffset,VerticalOffset) ; //Set the Data for the PhotoGrid Control gridElement.setData(JSONDataToBeBound); //Set the Number of images to be shown in one Page gridElement.setPageSize( pageSize ); //Bind the Grid gridElement.BindGrid( AtlasDemo.DataSourceType.JSON ); }
The Xml Data Format Supported by the PhotoGrid Component
<ResultSet totalResultsAvailable="2" totalResultsReturned="2" firstResultPosition="0"> <Results> <Result Title="just-a-little-bit_1024.jpg" Summary="Website: Deviant Art Homepage Download: 1024x768" Url="http:\/\/www.pixelgirlpresents.com\/images\/desktops\/elyse\/just-a-little-bit_1024.jpg"></Result> <Result Title="just-a-little-bit_1024.jpg" Summary="Website: Deviant Art Homepage Download: 1024x768" Url="http:\/\/www.pixelgirlpresents.com\/images\/desktops\/elyse\/just-a-little-bit_1024.jpg"></Result> </Results> </ResultSet>
Calling the BindGrid Function With XMl Data
1) Create and append the XML String to a stringBuilder Object
var sBuilder = new Sys.StringBuilder(""); sBuilder.append("<ResultSet totalResultsAvailable=\"2\" totalResultsReturned=\"2\" firstResultPosition=\"0\">"); sBuilder.append("<Results>"); sBuilder.append("<Result Title=\"just-a-little-bit_1024.jpg\" Summary=\"Website: Deviant Art Homepage Download: 1024x768\" Url=\"http:\/\/www.pixelgirlpresents.com\/images\/desktops\/elyse\/just-a-little-bit_1024.jpg\"></Result>"); sBuilder.append("<Result Title=\"just-a-little-bit_1024.jpg\" Summary=\"Website: Deviant Art Homepage Download: 1024x768\" Url=\"http:\/\/www.pixelgirlpresents.com\/images\/desktops\/elyse\/just-a-little-bit_1024.jpg\"></Result>");
sBuilder.append("</Results>"); sBuilder.append("</ResultSet>");
2) Set the Data to be rendered by the PhotoGrid Control
PhotoGridGlobalInstance.setData( sBuilder.toString() );
3) Set the DataSource Type to be XML while Binding ..
gridElement.BindGrid( AtlasDemo.DataSourceType.XMLString );
You are done .. Simple , neat and easy ...