text:
Database Driven Banner Rotator Control - CodeProject ×
12,690,575 members (34,532 online)
C#JavascriptC#3.0.NET3.0.NET.NET2.0VS2008SQL-server-2005DesignDev
27.6K views2.5K downloads53 bookmarked
Database Driven Banner Rotator Control hussain.attiya, 7 Jan 2010
A database-driven banner rotator control rotating based on a specific time (and not on page refresh). Each banner will have a display time (in seconds) to move to the next one.	Download demo - 1.25 MB
Download source code - 1.09 MB
In this article, I would like to present my Banner Rotator control. The idea of it is different from that of the ASP.NET AdRotator control. This control is database-driven, and banners are rotated at a specific time (not during page refresh). Each banner will have a display time (in seconds) to move to the next banner (a JavaScript does the rotation on the client side).
The source code (ASP.NET Server Control Project) and the ASP.NET website for testing the control are attached at the top of this article. I am going to explain, step by step, the following:
The different ways of using the control
Explanation of the ASP.NET Server Control (Class Library)
Database-driven: Banner specifications such as width, height, and if clickable are got from the database, so is the list of banners. The banners load from the database once and they rotate on the client-side.
Supports most image formats (JPG, GIF, BMP, and PNG, and also Flash files (swf)).
Cache: User can enable caching in the control and specify the cache duration. This will reduce the load of the database.
Hit counter functionality for each banner.
Fully customizable by the developer: they can control the way it will be display, repeating vertically and horizontally, reserve the banner area even if there are no banners loaded, and specify a condition for the banner display based on the page URL, querystring and any user-defined conditions.
Copy the DLL file "BannerRotatorControl.dll" into your ASP.NET application's "bin" folder.
Register the control in your ASPX page:
<%@ Register TagPrefix="BMS" Namespace="BannerRotatorControl"
Assembly="BannerRotatorControl"   %>
Use it in your ASPX page like this:
<BMS:BannerRotator  runat="server" ID="banner1"
ConnectionString="<%$ ConnectionStrings:bms_db %>"
BannersLanguage="en" LocationCode="TOP"
BannerImagesURL="<%$ appSettings:bms_data %>"
BannerClickFile="~/click.aspx" ScriptsPath="/scripts/"
ShowOnlyActivatedBanners="true"   />
There are five mandatory properties of the BannerRotator control to be set:
ConnectionString: Connection string of your database that contains the banner control tables. (The files bms_db.mdf, bms_db.ldf are included in the source.)
BannersLanguage and LocationCode: These are mandatory properties. They are the main properties that tell the BannerRotator to read data from the database based on the following tables:
BMS_BANNERS_AREAS contains the list of banner areas. In the above ASP.NET control, I have set BannersLanguage="en" LocationCode="TOP" which tells the control to read the banner area record in which lang="en" and location_code="TOP" (highlighted one) and draw a banner area based on the information specified in these record fields:
NoAds_image: This will control the banner area to be reserved even if there are no banners for this area.
Master table of languages
Master table containing the list of locations (Location means the page location - Left, Right, Top, and Bottom)
BannerImagesURL: This property tells the control the banner image file location URL. I have set the property above to read from the appSettings key of the web.config:
<add key="bms_data" value="http://localhost/biznet-data/bms_test/{0}/banners/"/>
"biznet-data" is a virtual directory created in IIS, and points to the folder "c:\Biznet_data\bms_test\en\banners\". Note that I have used {0} to be replaced by the banner language.
Some other properties in the above ASP.NET control code includes:
BannerClickFile: This will specify if the banner is clickable or not. This is the path of the file click ASPX page in your ASP.NET website. There, you have write code to update the banner click counts and redirect to the specified URL link:
string urlstr = BannerRotatorControl.BannerRotator.UpdateBannerClick(
ConfigurationManager.ConnectionStrings["bms_db"].ToString());
if (!string.IsNullOrEmpty(urlstr))
Response.Redirect(urlstr);
ScriptsPath: This property is important if you plan to use Flash files in your banner control. You should specify the Flash JavaScript script path for the Flash loader:
ShowOnlyActivatedBanners: Set this to true if you want to show only the activated banners, or false to show all banners (set it to false if you use the banner rotator in the Banner Management Admin site).
Different ways of using the BannerRotator control
We can use the control in different scenarios; I am going to list the most common ones:
Single reserved banner area rotating multiple banners
In this scenario, we want to have a banner area (468 X 60 pixels) on the top of the page which shows an "Advertising Space" image if there are no banners added in this area yet. Otherwise, it will show the banners and rotate them based on the display time (in seconds) specified for each banner.
The BannerRotator control code will be:
ShowOnlyActivatedBanners="true"  Repeat="NoRepeat"  />
Based on the properties set in the control, the control will read the above record, and because the "Repeat" property is set to "NoRepeat", it will select the top record ordered by the "ls_order" field ascending. The result of the banner display will be as follows:
Because no banners were added yet in the "BMS_BANNERS" table under this record, and also the "NoAds_image" field is not null, this will tell the banner to reserve the area and show the image specified in that field.
We add banner records in the "BMS_BANNERS" table under this record, as in the image below:
Based on the above records image, the banner rotator control will start displaying the banners and rotate them based on the listing order "ls_order".
The first banner that will be displayed is "BCCI_en_ad_eztrade468X60.jpg" for 3 seconds, and it will be clickable since "link_url" is set to "http://www.eztrade.bh/".
The second banner is "bcci_en_shops_eztrade.gif", displayed for 2 seconds, and it will not be clickable because "link_url" is null.
The last one is "bcci_en_banner1.swf" (a Flash banner), displayed for 7 seconds.
Then it will loop back again.
Multiple banner areas with a single banner each
In this scenario, we want to display four equal sized banners (202 X 96 pixels) on the left side of the page and listed vertically. They are not clickable.
First, add four records in the "BMS_BANNERS_AREAS" table as below:
Then, add the code in your ASPX page, as below:
<BMS:BannerRotator   runat="server" ID="BannerRotator1"
BannersLanguage="en" LocationCode="LFT"
ScriptsPath="/scripts/" BannerImagesURL="<%$ appSettings:bms_data %>"
Repeat="RepeatY" VerticalSpacing="5"
ShowOnlyActivatedBanners="true"/>
The code above will read all records with location_code="LFT" and lang="en", ordered by "ls_order" because the "Repeat" property is set to "RepeatY" (list vertically). It will not reserve any banner area because all the records have null values in the "NoAds_image" field. It will only show the banners added in that area, if any.
We add a banner record in the "BMS_BANNERS" table for each banner area above:
Based on the above records, the result of the banner control will be like this:
I have set the "VerticalSpacing" property to "5".
Multiple reserved banner areas with multiple banners
In this scenario, we want to have three banner areas with different sizes on the right side of the page. The first two banner areas have a size of 157 X 55 pixels, and the third one is 157 X 264 pixels. We want to list them vertically. All of them should show the "Advertising Space" image, if there are no banners added yet.
<BMS:BannerRotator runat="server" ID="BannerRotator2"
BannersLanguage="en" LocationCode="RGT"
ShowOnlyActivatedBanners="true"
BorderWidth="1" BorderColor="Red"
BorderStyle="Solid" BannerClickFile="~/click.aspx" />
Based on the records, the banner control will display three banner areas with the "Advertising Space" image. Because the "NoAds_image" field is not null for all of them, and there are no banners added yet for all of them, the result will be like this:
We add two records in the "BMS_BANNERS" table under the first banner area:
Base on the above records image, the banner rotator control will start displaying the banners and rotate them based on the listing order "ls_order" (first banner area).
First banner will be displayed is "bcci_en_btn.jpg" for 4 seconds and it will be clickable since the "link_url" is set to "http://www.bahraintradanet.com/".
Second banner is "bcci_en_gtn.jpg" for 6 seconds and it will be clickable since the "link_url" is set to "http://www.gulftradanet.com/".
Conditionally displaying banner in a banner area
In this scenario, we are going to take the first scenario and add a little advanced functionality. We want to control the display of banners based on "PageURL", "QueryString", "Session", "Cookies", and "UserDefined".
As I mentioned above, the top banner are has three banners: banner_id=14, banner_id=15, and banner_id=16. We want to display banner_id=14 only when the page URL is "/BannerRotator_test/default.aspx" or when we have the query string "q=1".
The ASP.NET code:
<BMS:BannerRotator BannersLanguage="en" ConnectionString="<%$
ConnectionStrings:bms_db %>" LocationCode="TOP"
ScriptsPath="/scripts/" runat="server" ID="banner1"
BannerClickFile="~/click.aspx"
ShowOnlyActivatedBanners="true" Repeat="NoRepeat"  >
<BMS:BannerDisplayCheck ParameterType="PageURL"   />
<BMS:BannerDisplayCheck ParameterType="QueryString"  ParameterName="q" />
<BMS:BannerDisplayCheck ParameterType="Session" ParameterName="my_session" />
<BMS:BannerDisplayCheck ParameterType="Cookie" ParameterName="my_cookie" />
<BMS:BannerDisplayCheck ParameterType="UserDefined"  />
</BMS:BannerRotator>
The "BannerDisplayCheck" parameters will tell the banner rotator to check in the "BMS_BANNER_DISPLAY_CRITERIAS" table and compare values and display the banner according to the matching criteria. Here are the parameter types and usage:
PageURL: This will tell the banner control to lookup "BMS_BANNER_DISPLAY_CRITERIAS" with a "criteria_code" equal to "PageURL" and compare the current ASPX page URL with the "criteria_value" field. If matched, then the banner_id of this row can be displayed.
QueryString: This will tell the banner control to lookup "BMS_BANNER_DISPLAY_CRITERIAS" with a "criteria_code" equal to "QueryString" and check the current ASPX page URL querystring name matching "ParameterName". Then, it compares the querystring value with the "criteria_value" field. If matched, then the banner_id of this row can be displayed.
Session: This will tell the banner control to lookup "BMS_BANNER_DISPLAY_CRITERIAS" with a "criteria_code" equal to "Session" and check if there is any session object with the same name as "ParameterName". Then it compares the session object value with the "criteria_value" field. If matched, then the banner_id of this row can be displayed.
Cookie: This will tell the banner control to lookup "BMS_BANNER_DISPLAY_CRITERIAS" with a "criteria_code" equal to "Cookie" and check if there is any cookie object with the same name as "ParameterName". Then it compare the cookie object value with the "criteria_value" field. If matched, then the banner_id of this row can be displayed.
UserDefined: This will tell the banner control to lookup "BMS_BANNER_DISPLAY_CRITERIAS" with a "criteria_code" equal to "UserDefined", and it will compare the value entered by the user in the "UserDefinedParameterValue" property of the control value with the "criteria_value" field. If matched, then the banner_id of this row can be displayed.
The idea of the control is to get banners from the database and rotate them based on a specified time for each banner. Initially, I utilised AJAX to do the job. I used the AJAX Timer and UpdatePanel controls. I used the timer tick event to display the next banner. But that was a very bad approach because it takes up a lot of resources from the server and bandwidth. The biggest disadvantage of the UpdatePanel is that it still sends all the viewstate back and forth, so you use up a lot of bandwidth. Another one's that most of the page life cycle still gets run.
I continued using AJAX with Web Services for better performance and less bandwidth usage, returning JSON data back and using JavaScript in the browser to make up the HTML and inject it in the page. This enhanced performance, but I was not happy because, again for each timer tick event, I had to read the next banner record from the database.
Finally, I came up with this control, which reads all the banners once from the database and generates HTML and JavaScript to do the rotation on the client side, using the JavaScript function "setTimeout". This is done in the control "RenderContents" event. Below is an example of the generated banner rotation code:

var BannerHtml_arr15= new Array();
var swfId_arr15 = new Array();
var DisplayTimeSeconds_arr15 = new Array();
var banner_count15 =0;
var BannerHtml15=null;
var swfId15=null;
var BannerIndex15=0;
banner_count15=3
//array items generated from the database
BannerHtml_arr15[0]="";
swfId_arr15[0]='';
DisplayTimeSeconds_arr15[0]='3000';
BannerHtml_arr15[1]="";
swfId_arr15[1]='';
DisplayTimeSeconds_arr15[1]='2000';
BannerHtml_arr15[2]="";
swfId_arr15[2]='http://localhost/biznet-data/bms_test/en/banners/bcci_en_banner1';
DisplayTimeSeconds_arr15[2]='7000';
function DisplayBanner15()
if (BannerHtml15!=null || swfId15!=null)
if (BannerHtml15!=null) {
document.getElementById('Banner115').innerHTML  =BannerHtml15;
else if (swfId15!=null) {
//loading flash object using java script.
var lcId15 = new Date().getTime();
var flashProxy15 = new FlashProxy(lcId15,
'/BannerRotator_test/scripts/JavaScriptFlashGateway.js');
var flashObject15 = new FlashTag(swfId15+'.swf',468,60, '8,0,0,0');
flashObject15.setFlashvars('lcId=' + lcId15);
flashObject15.write(document.getElementById('Banner115'));
if (banner_count15>1)
setTimeout('DisplayBanner15()',
DisplayTimeSeconds_arr15[BannerIndex15],'JavaScript')
BannerIndex15++;
if (BannerIndex15 >= banner_count15)
BannerIndex15=0;
SetValues15();
function SetValues15()
if (BannerHtml_arr15[BannerIndex15]!=null && BannerHtml_arr15[BannerIndex15]!='')
BannerHtml15 = BannerHtml_arr15[BannerIndex15];
BannerHtml15 = null;
if (swfId_arr15[BannerIndex15]!=null && swfId_arr15[BannerIndex15]!='')
swfId15 = swfId_arr15[BannerIndex15];
swfId15 = null;
function LoadBanners15()
if (BannerIndex15==0)
DisplayBanner15();
LoadBanners15();
Before I start, here is a screenshot of the banner control database:
The code is called from the "RenderContents" event of the control. Initially, we get a list of banner areas by calling the following function:
protected DataTable GetBannerArea()
//selecting a single record (first record based on order of "ls_order" column)
if (_Repeat == RepeatOptions.NoRepeat)
sql += "top 1 ";
sql += " * from BMS_BANNERS_AREAS where location_code=@location_code" +
" and lang=@lang and Active_flag='1' order by ls_order";
da.SelectCommand.Parameters.AddWithValue("location_code", _LocationCode);
da.SelectCommand.Parameters.AddWithValue("lang", _lang);
if (_EnableCaching)
DataTable dt_c = HttpContext.Current.Cache["AdRotator_" +
_Repeat.ToString() + "_" +
_LocationCode + "_" + _lang] as DataTable;
if (dt_c != null)
dt = dt_c;
HttpContext.Current.Cache.Insert("AdRotator_" +
_Repeat.ToString() + "_" + _LocationCode + "_" +
_lang, dt, null,
DateTime.Now.AddMinutes(_CacheDuration), TimeSpan.Zero);
retVal = dt;
throw new Exception("Exception Accured in : protected" +
" void GetBannerArea(). For More Details " +
"See Inner Exception Message", ex);
The above function will retrieve the banner areas from the "BMS_BANNERS_AREAS" table based on "Location_code" and "Lang". Each row will define a banner area with a dimension. I call the function to get a DataTable with the results.
//initially we get the list of banner areas in a datatable
DataTable dt_banner_areas = GetBannerArea();
Then, I loop through the records to render the HTML and JavaScript code. Refer to the generated example above.
//loop through the banner areas
foreach (DataRow dr in dt_banner_areas.Rows)
_banner_area_id = Convert.ToString(dr["banner_area_id"]);
_Width = Convert.ToString(dr["widthpx"]);
_Height = Convert.ToString(dr["hieghtpx"]);
if (!string.IsNullOrEmpty(Convert.ToString(dr["NoAds_image"])))
_NoAdFile = string.Format(_bms_data_url, _lang) +
Convert.ToString(dr["NoAds_image"]);
_NoAdAlt = Convert.ToString(dr["NoAds_imageAlt"]);
//again check the banner areas count for doing
//the html table. and placing the banner areas.
if (dt_banner_areas.Rows.Count > 1)
if (_Repeat == RepeatOptions.RepeatX)
sb.Append("" + Environment.NewLine);
else if (_Repeat == RepeatOptions.RepeatY)
//start doing the html and javascript. better you view source
//of the aspx page to see the resulted html.
sb.Append(@"
" + Environment.NewLine);
sb.Append("
" + Environment.NewLine);
//writing up the javasctript that will do the banner rotation.
sb.Append(@"" + Environment.NewLine);
Note, I call the function "GenerateJavascriptArrayItems" to generate the array items for the JavaScript. This function is the one that gets all the banner records added under a particular banner area.
protected string GenerateJavascriptArrayItems()
// getting list of banner within an area banner.
// based on the "_banner_area_id"
DataTable dt = GetBannersWithinArea();
retVal += "banner_count" + _banner_area_id + "=" +
//loop through the banners
//generate the banner
GenerateBannerHTML(dr);
retVal += "BannerHtml_arr" + _banner_area_id +
"[" + i.ToString() + "]=\"" +
_BannerHtml + "\";" + Environment.NewLine;
retVal += "swfId_arr" + _banner_area_id + "[" +
i.ToString() + "]='" + _swfId +
"';" + Environment.NewLine;
retVal += "DisplayTimeSeconds_arr" + _banner_area_id +
"[" + i.ToString() + "]='" +
_DisplayTimeSeconds + "';" +
//nullfy the values for next banner usage
_BannerHtml = null;
_swfId = null;
_DisplayTimeSeconds = 0;
//generate and empty banner. (just the banner area block
//with advertizing space image if provided)
GenerateBannerHTML(null);
retVal += "BannerHtml_arr" + _banner_area_id + "[0]=\"" +
retVal += "swfId_arr" + _banner_area_id + "[0]='" +
_swfId + "';" + Environment.NewLine;
"[0]='" + _DisplayTimeSeconds + "';" +
In the above function, I call another function "GetBannersWithinArea" to get the banners of a particular banner area, then loop through the records to generate the JavaScript array items. I am calling another function "GenerateBannerHTML". This function will assign the HTML markup to the variable "_BannerHtml".
protected DataTable GetBannersWithinArea()
//generating sql statement for selecting the banners
string sql = "select * from BMS_BANNERS";
sql += " where banner_area_id=" + _banner_area_id;
//check for banner start date and expiry date
sql += " and CONVERT(varchar(10),expiry_date,121) " +
">=CONVERT(varchar(10),getdate(),121)  ";
sql += " and CONVERT(varchar(10),getdate(),121) " +
">=CONVERT(varchar(10),start_date,121)  ";
//apply banner display condition based
//on the user define parameters in the control.
string BannerDisplaySqlConditions = GetBannerDisplaySqlConditions();
if (!string.IsNullOrEmpty(BannerDisplaySqlConditions))
sql += BannerDisplaySqlConditions;
if (_ShowOnlyActivatedBanners)
sql += " and active_flag='1' ";
sql += " order by ls_order";
//applying cache if applicable.
string c_BannerDisplaySqlConditions = null;
c_BannerDisplaySqlConditions = BannerDisplaySqlConditions.Replace(" ", "_");
c_BannerDisplaySqlConditions = c_BannerDisplaySqlConditions.Replace("'", "_");
c_BannerDisplaySqlConditions = c_BannerDisplaySqlConditions.Replace(">", "_");
c_BannerDisplaySqlConditions = c_BannerDisplaySqlConditions.Replace("<", "_");
c_BannerDisplaySqlConditions = c_BannerDisplaySqlConditions.Replace("(", "_");
c_BannerDisplaySqlConditions = c_BannerDisplaySqlConditions.Replace(")", "_");
c_BannerDisplaySqlConditions = c_BannerDisplaySqlConditions.Replace(":", "_");
c_BannerDisplaySqlConditions = c_BannerDisplaySqlConditions.Replace("/", "_");
c_BannerDisplaySqlConditions = c_BannerDisplaySqlConditions.Replace(@"\", "_");
c_BannerDisplaySqlConditions = c_BannerDisplaySqlConditions.Replace("=", "_");
//get data from cache if exists
DataTable dt_c = HttpContext.Current.Cache["AdRotator_" + _banner_area_id +
"_" + _ShowOnlyActivatedBanners + "_" +
c_BannerDisplaySqlConditions] as DataTable;
//or get it from database and store it in the cache for later retrieval.
HttpContext.Current.Cache.Insert("AdRotator_" + _banner_area_id +
c_BannerDisplaySqlConditions, dt, null,
The above function will retrieve the banner records from the table "BMS_BANNERS" based on "banner_area_id".
I would also like to mention that I have implemented a properties collection. These are the "BannerDisplayCheck" parameters which I mentioned under the title "Conditionally displaying banner in a banner area" above.
For that, I have created a separate class, BannerDisplayCheck.
namespace BannerRotatorControl
public class BannerDisplayCheck
public enum CriteriaTypes
PageURL, QueryString, Session, Cookie, UserDefined
protected CriteriaTypes _criteraType = CriteriaTypes.PageURL;
protected string _CriteriaName = null;
public BannerDisplayCheck()
: this(CriteriaTypes.PageURL, string.Empty)
public BannerDisplayCheck(CriteriaTypes CriteriaType, string Name)
_criteraType = CriteriaType;
_CriteriaName = Name;
Description("List of Different types of parameters: " +
"PageURL, QuertString,  Session, Cookie"),
public CriteriaTypes ParameterType
return _criteraType;
_criteraType = value;
Description("ParameterName: exmaple: Name " +
"of the QueryString, Session,Coookie"),
return _CriteriaName;
_CriteriaName = value;
Then, in my main class "BannerRotator", I have implemented the "INamingContainer" interface:
//[DefaultProperty("Text")]
[ParseChildren(true, "BannerDisplayCheckCollection")]
[ToolboxData("<{0}:BannerRotator runat="server">")]
public class BannerRotator : WebControl, INamingContainer
Then the following public property will take care of collecting attributes information from the user:
Description("The BannerDisplayCheck collection"),
DefaultValue(null), MergableProperty(false), Bindable(false)
public List<BannerDisplayCheck> BannerDisplayCheckCollection
if (_BannerDisplayCheck == null)
_BannerDisplayCheck = new List<BannerDisplayCheck>();
return _BannerDisplayCheck;
I use the collection in the function "GetBannerDisplaySqlConditions". This function will build up the lookup part of the SQL statement in the function "GetBannersWithinArea":
protected string GetBannerDisplaySqlConditions()
if (_BannerDisplayCheck.Count > 0)
retVal += " and banner_id in (select banner_id " +
"from BMS_BANNER_DISPLAY_CRITERIAS where ";
foreach (BannerDisplayCheck bdc in _BannerDisplayCheck)
switch (bdc.ParameterType)
case BannerDisplayCheck.CriteriaTypes.QueryString:
HttpContext.Current.Request[bdc.ParameterName]))
retVal += "(criteria_code='" +
bdc.ParameterType.ToString() + "'";
retVal += " and criteria_value='" +
HttpContext.Current.Request[bdc.ParameterName] +
"') or ";
case BannerDisplayCheck.CriteriaTypes.PageURL:
HttpContext.Current.Request.RawUrl.Split('?')[0] +
case BannerDisplayCheck.CriteriaTypes.UserDefined:
if (!string.IsNullOrEmpty(_UserDefinedParameterValue))
_UserDefinedParameterValue + "') or ";
case BannerDisplayCheck.CriteriaTypes.Session:
if (!string.IsNullOrEmpty(Convert.ToString(
HttpContext.Current.Session[bdc.ParameterName])))
HttpContext.Current.Session[
bdc.ParameterName].ToString() +
case BannerDisplayCheck.CriteriaTypes.Cookie:
HttpCookie cookies =
HttpContext.Current.Request.Cookies[bdc.ParameterName];
HttpContext.Current.Request.Cookies[bdc.ParameterName].Value)))
HttpContext.Current.Request.Cookies[
bdc.ParameterName].Value.ToString() +
//removing the last un-needed or
retVal = retVal.Substring(0, retVal.Length - 3);
retVal += ")";
HttpContext.Current.Response.Write(retVal);
//  HttpContext.Current.Response.End();
For more details of the source code, please download the source code from the top of this article. The source code is easy and well commented. Download the demo to see the different scenarios of using the control.
Hope this control is useful, and I would like to see comments and votes.
Marvelous introduction jokefan6-May-14 19:07
jokefan6-May-14 19:07 It's been a long time for me no seeing quite explicit an article introducing the rotator control. I think I gained quite a lot from this abundant source of passage, I can't help to take a try. This is more practical than the c# rotator control tutorial I'd read before. Excellent!
Nice! salsafreakpr2-Jan-14 11:10
salsafreakpr2-Jan-14 11:10 Hey Hussain,I really enjoyed reading your article as this is exactly what I'd like to implement on my website. Also, I'm wondering if you may have updated it to use MVC 4 or MVC 5 (or if it's easy to modify the code as is into these environments).I would appreciate any feedback you can give me on this.Thanks again for an awesome article with great details on how to go about implementing such a solution.Regards,Raul
Excellent Musthafa (Member 379898)16-Sep-12 22:48
Musthafa (Member 379898)16-Sep-12 22:48 Excellent...Really usefull
my vote of 5 muhamad yousef28-May-12 21:55
muhamad yousef28-May-12 21:55 great work i was used another control , that i developed it but your control seems better .thanks Excellent Job! Bill SerGio, The Infomercial King30-Oct-11 5:03
Bill SerGio, The Infomercial King30-Oct-11 5:03 You did a nice job and you are exceptional among developers in that you realize the value of delivering adverting. I do a similar thing on television in America, instead of buying the television time, I give the television stations a TV commercial and pay the stations 25% of what the commercial sells. In this way I am guaranteed a NET profit every time the commercial airs and the TV time is free. A typical station will sell between 5 and 25 orders a day so putting a commercial on 300 stations can easily generate over 3,000 orders a day without spending a penny on TV time. And, just like tracking banner ads, we have to track the results of the TV commercials and we do it in a way that is almost identical to what you are doing.Keep up the good work!http://www.GeminiGroupTV.com
My vote of 5 Bill SerGio, The Infomercial King30-Oct-11 4:57
Bill SerGio, The Infomercial King30-Oct-11 4:57 Excellent Job!
My vote of 5 thatraja6-Oct-10 2:31
thatraja6-Oct-10 2:31 Good control
Good Work Hasan Jaffal16-Jan-10 0:11
Hasan Jaffal16-Jan-10 0:11 Hello,Great work, i would like to suggest to modify the control to take as datasource some of serializable objects as arrays for example.any way thank you " I love deadlines. I like the whooshing sound they make as they fly by. "
Re: Good Work hussain.attiya16-Jan-10 20:19
hussain.attiya16-Jan-10 20:19 Thank you,i thought about datasource. but if the control is other than a banner control, i will spend time to do. Hussain Mohammed Saleh AttiyaISP Technical ManagerAtyaf Telcom - Bahrain
Last Updated 7 Jan 2010	Article Copyright 2010 by hussain.attiyaEverything else


text:
Baby Sing, Sign & Play Tickets, Mon, Mar 13, 2017 at 10:00 AM | Eventbrite
Monday, March 13, 2017 from 10:00 AM to 10:45 AM (EDT)
5 Week Session Monday, March 13th - April 10th

type: global

value: This website is an American event management and ticketing website. The service allows users to browse, create, and promote local events.


text:
Latest News for: sheridan, illinois
East Jordan's Metcalf named veteran of the month
BOYNE CITY — The veteran of the month for April is Julius Leroy Metcalf. Born on Nov ... On Aug ... On July 6, 1945, at the Separation Center Fort Sheridan, Illinois, Metcalf was given an Honorable Discharge from Military Service with the rank of Tech Sargent 5, and received the following Decorations ... He enjoyed hunting, fishing and spending time outdoors ... ....
Man loses $6,000 wedding ring in Craigslist scam
In a phone interview Wednesday, he said an Illinois-based buyer responded to his post on Craigslist ... Kusler eventually called police in Sheridan, Illinois, where the buyer said he lived. Sheriff deputies in Sheridan confirmed the buyer lived in the town, and advised Kusler to ......
News Tribune 16 Mar 2019
Patrick Sheridan, 90, of Mendota died March 15, 2019, in the Illinois Veterans Home at La Salle. Arrangements are pending at Merritt Funeral Home, Mendota ... ....
Timothy Williams, who was shot three times – once in his right arm and twice in his back – is suing the Illinois State Police for not following proper procedures that allowed the gunman to keep the handgun used in the shooting ... Among those killed in the shooting was Sheridan native Trevor Wehner, 21....
This year's exhibition will be held at seven Peoria galleries. The Contemporary Art Center of Peoria, Prairie Center of the Arts, Studios on Sheridan, Illinois Central College, Peoria Art Guild, and on ... ....
Vermillion Plain Talk 27 Feb 2019
Donald B. Gregg, age 90, a retired life-long Clay County farmer, passed away on Feb. 24, 2019 at Prairie Estates Care Center in Elk Point, SD. He was born Oct. 22, 1928 to Ray and Daisy (Gray) Gregg ... He was stationed at Colorado Springs and attended the Army Cooks and Bakers school at Fort Sheridan, Illinois for eoght weeks ... On Dec ... .......
... Parks of Elgin; plant manager Josh Pinkard of Oswego; mold operator Russell Beyer of Yorkville; stock room attendant and fork lift operator Vicente Juarez of Oswego; and Trevor Wehner, an intern and Northern Illinois University student who lived in DeKalb and grew up in Sheridan....
Pape is the senior vice president and market manager for commercial real estate in Illinois and Wisconsin at TCF Commercial Banking ... Jim Pape, senior vice president and market manager for commercial real estate in Illinois and Wisconsin at TCF Commercial Banking (Photo ... Vincent Ferrer School in River Forest, Illinois....
Sheridan, Illinois, is a lot like the town I grew up in. Small. Rural. Friendly. Sometimes a little suspicious of outsiders poking around. But on Wednesday afternoon, the people who live in this LaSalle County village of 700 — if you don’t count the prison population, I was told — were also in... ....
The following marriage licenses have been recorded at the Hardin County Clerk’s office ... • Mitchell Phillip Galles, 25, Sheridan, Illinois, and William Edward Matlock, 25, Chandler, Arizona ... ....
facility in Aurora, Illinois, will be open any employees who want to spend time with colleagues and counselors will be available, spokeswoman Yolanda Kokayi said ... The visitation and funeral for one of the victims, Trevor Wehner, will be Wednesday in his hometown of Sheridan. Wehner, 21, was a Northern Illinois University business student ... .......
“Today is not that day. ” ... His fellow member of Congress Bill Foster, reminded the public that he entered public office in the wake of the mass shooting at Northern Illinois University ... Services for the youngest victim, Trevor Wehner, an intern at the plant, will be Wednesday at the Gabel-Dunn funeral home in Sheridan, Illinois ... ....

value: This website is a news aggregator founded in March 1995 and launched online in 1998. In 2003, Search Engine Watch praised the service for its "Special Reports", and called it "an interesting alternative" to other news aggregation services.


text:
Hack facebook email Jobs, Employment | Freelancer
Looking for Hack facebook email Workers or Work?
Need help with Hack facebook email? Hire a freelancer today! Do you specialise in Hack facebook email? Use your Hack facebook email skills and start making money online today! Freelancer is the largest marketplace for jobs in the world. There are currently 17,764 jobs waiting for you to start work on!
Hack facebook email Jobs:
hack iphone I need an iPhone hacker who can get me the GPS and recording and camera on my iphone 7 plus 0 Mobile App Development, iPhone Apr 19, 2018 Today6d 11h -
Mobile and website development I need a responsive website. I would like it designed and built. An online store catering to new moms with mommy hack products, making lifestyle easier for both for mom and baby. 29 Mobile App Development, HTML Apr 19, 2018 Apr 19, 20185d 18h $135
Flash Game Hacking Looking for someone who can hack this Facebook flash game [url removed, login to view] I want some kind of automatic play app. Hopefully it can be done on the client side. Otherwise, it may involve some kind of screen scraping in order to read the game state and play automatically. 2 Adobe Flash, Game Development Apr 16, 2018 Apr 16, 20183d 14h $633
Growth hack toward college students Growth Hack to get more student users at Texas A&M and UT 9 Social Networking, Freelance, Leads, Social Media Marketing, Channel Sales Apr 15, 2018 Apr 15, 20182d 11h $176
Hardware and Software Consultancy for Office We are a company based in Dwarka, New Delhi, India. We have about 25 employees and are looking to scale up to more strength. We are looking to optimise our hardware and software configurations - existing and future expansions - so that we are fully ready for the future. Hence looking for a freelancer who can physically meet us, advise us and help us fully execute in the arena of:- 1. Correct ... 3 System Admin, Linux, Web Security, Computer Security, Internet Security Apr 14, 2018 Apr 14, 20181d 9h $608
NFC hack/flash XYZ Da Vinci Jr.2 Mix 3D printer Hi There, I looking for someone to help me hack the XYZprinting Da Vinci Jr. 2.0 Mix 3D Printer so I can use any printing filament, not just the XYZ printing material. Hoping someone can point me in the right direction, or even help me in flashing this 3D printer so i can use any filament. would be a bonus if I can continue using the XYZware 3D printing apps, but not essential. Thank you,... 2 3D Printing Apr 14, 2018 Apr 14, 201817h 24m $25
Fortnite Private Aimbot hack Hello, I'm currently looking to hire a programmer who can code me a private hack for only me for the video game Fortnite. There is an anti-cheat system called battle eye that will need to be bypassed. This needs to be a silenced inject and it needs to go un noticeable. Looking for someone who can keep up with the updates for me and doesn't take long to do this. If you're able to pro... 6 PHP, C Programming, C# Programming, Software Architecture, C++ Programming Apr 14, 2018 Apr 14, 201816h 22m $170
Fortnite aimbot hack I need an undetectable aimbot and ESP (so I can see where enemies are through walls, etc) hack for fortnite battle royale (game is free and built with Unreal Engine). You must have experience writing hacks for games. Their anticheat is BattleEye so it needs a BattleEye bypass as well as the actual cheat. Needs to be undetectable. Do not just download someone elses old hack and try to sell it to ... 1 C Programming, Windows Desktop, Software Architecture, C++ Programming Apr 5, 2018 Apr 5, 2018Ended $155
SEO Specialist for Woocommerce website We need white hack SEO, we don't want to get penalized by GOOGLE. We need to get indexed all our products on Google. Also we will need backlinks. Technical side of SEO will be done by us. You will find 20-30 best performing keywords and work on them. 91 Internet Marketing, SEO, Link Building, Marketing, Search Engine Marketing Apr 5, 2018 Apr 5, 2018Ended $111
Cleanup custom built website that has been hacked, and prevent future hacks As usual I use a keyword in the project, if you don't quote this keyword I will delete your bid and assume you didn't read the brief. I get fed up of the auto bidders on this... The keyword for this one is "glasses" PHP website that has been hacked, we host the site, so you will need to clean it up and change the security settings and whatever weakness was used. The ad... 18 PHP, Website Design, Web Security, HTML Apr 3, 2018 Apr 3, 2018Ended $133
Troubleshoot core php website after a malware issue My site was hack but I managed to remove the malware that ware found. Now my website is up and running but the all html pages cannot be access. Need you to trouble shoot and resolve. 35 PHP, Website Design, Graphic Design, MySQL, HTML Apr 3, 2018 Apr 3, 2018Ended $85
We have a Bitcoin exchange site. I need a security auditor and someone that understand security and Bitcoins I need a full audit and find 100 ways to hack a site. Your job is to create a report of the issues in the security of the site, flaws, 100 ways that can be hacked and write solutions to be taken. You may have to implement these solutions. I may move the site to AWS at first I will have it in a standard hosting for you to review. I would like to see a sample report that you may have done already on... 9 PHP, Web Security, Audit, Bitcoin, Internet Security Mar 29, 2018 Mar 29, 2018Ended $378
Need Private ESP or CHAMS Hack for Fortnite Battle Royale Coded I need an undetectable ESP or CHAMS (so I can see where enemies are through walls, etc) hack for fortnite battle royale (game is free and built with Unreal Engine). Their anticheat is Easy Anticheat and BattleEye so it needs a bypass them as well as the actual cheat. Needs to be undetectable. Do not just download someone elses old hack and try to sell it to me. This must be for me only, no lice... 8 C Programming, C# Programming, C++ Programming, Unity 3D, Game Development Mar 27, 2018 Mar 27, 2018Ended $125
Complete the design and create a fully functioning dynamic Rental website Need not work from scratch. It's the RENTAL/SALES WEBSITE built with ruby on rails that's pending completion. Need the completion of the design and create a fully functioning website. Backend database must be dynamically queried and filtering for price range (lowest for example), area (nearest location), rental specs, scheduling, booking, payment (integrated with Paypal, CC, and other op... 15 PHP, Javascript, Website Design, HTML, Angular.js Mar 22, 2018 Mar 22, 2018Ended $543
iPhone IMEI Check Script I need a IMEI Check Script Where User Will Add Their IMEI And Once They Click On Submit (After Google reCAPTCHA) verification they will get their device model,storage , color etc I have api access from service providers PHP (Post and Get) and Dhru Api Please let me know if anyone can do this in one day with that budget I will also need some security so no one can hack the apis And also i ... 2 PHP, Website Design, Graphic Design, Blog Install Mar 19, 2018 TodayEnded $25
Hire the Top Hack facebook email Freelancers:
i want a hack facebook account, need someone who can hack facebook account, facebook email extractor, facebook email list, facebook email scraper, hack facebook account, facebook email grabber, facebook email script, hire freelancer to hack facebook, extract facebook email, facebook email importer, facebook email grabber php, facebook email fetcher, facebook email scraping, facebook email database, facebook email addresses, facebook email list usa, hack facebook password, facebook email extract, facebook email scrape, convert facebook email real email, hack facebook page, extract facebook email addresses, facebook email scrapper, facebook email finder, facebook email application, scraper facebook email, facebook email lists, hack facebook account email, hack girlfriends facebook email, Hack facebook email freelancers

value: This website is an Australian freelance marketplace website, which allows potential employers to post jobs that freelancers can then bid to complete. Founded in 2009, its headquarters is located in Sydney, Australia, though it also has offices in Vancouver, London, Buenos Aires, Manila, and Jakarta.


text:
Shop Brewster Blue/Pink Area Rug (7'7 x 9'6) - Free Shipping Today - Overstock.com - 16753929
Brewster Blue/Pink Area Rug (7'7 x 9'6)
Today: $118.18
Update a medium-size room with this Brewster area rug. Made with strong polypropylene pile, this rug features a traditional geometric pattern with distressed detailing and color striations for a distinct vintage look.

value: This website is an American internet retailer selling primarily furniture headquartered in Midvale, Utah, near Salt Lake City.