:~/writing$ cat "Extending the PhotoGrid to allow Xml DataBinding using JavaScript Enumerations"
Extending the PhotoGrid to allow Xml DataBinding using JavaScript Enumerations
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 ...