Asp Net Source.com's BlogAspNetSource's Official Blog

asp.net source code blog

Categories

Archives

2/18/2010 - Why is there an ASP.NET account on my machine
1/16/2010 - How to Open a Redirect in a New Window
1/2/2010 - Convert string to datetime Using C#
12/8/2009 - Using ASP.NET FileUpload to work with Images
11/24/2009 - Detect and Replace URLs in Text using Regex
11/17/2009 - Display RSS Feeds Using XmlDataSource
11/12/2009 - Get Current Theme Programmatically
11/10/2009 - Add Default ListItem to a DropDownList Control
10/20/2009 - GridView with LINQ Programatically
9/28/2009 - Server.HtmlEncode vs HttpUtility.HtmlEncode
8/20/2009 - Get List of sub Directories
7/29/2009 - gridview hide header
7/27/2009 - EmptyDataText Property in the Repeater Control
7/11/2009 - XmlDataSource GridView Example
7/5/2009 - Displaying multiple static paths by single page
6/8/2009 - Categories of classes in the System.Security.Cryptography Namespace
6/1/2009 - Delayed Loading of Page Parts
5/7/2009 - Using MySql in ASP.NET project, cofiguring, exaples with SqlDataSource, GridView, etc
4/29/2009 - What Are You Coding Right Now
4/23/2009 - Concat Byte Arrays in C Sharp
4/13/2009 - Visual Studio 2010 is Coming
3/16/2009 - automatic refresh page in some interval with javascript
2/21/2009 - we have just launched a new asp.net related site
2/18/2009 - Try Catch vs. Using
2/10/2009 - How to Set Language in web.config
1/30/2009 - A New Site for Free Online Test for Developers
1/21/2009 - Easy way to send email from gmail account using ASP.NET 3.5
1/15/2009 - Easy way to Dispaly a Word Document in Web Page
12/20/2008 - Create Yes No Voting Control
12/20/2008 - Our Team
12/15/2008 - Select xml node by other node
12/3/2008 - Forget about tedious mistakes when Validate through W3C
11/19/2008 - Fields removed when Download our Products
11/13/2008 - How to select all text in textbox when it gets focus
11/7/2008 - LINQ DataContext Class
11/3/2008 - PNGs and Browser Support
10/28/2008 - Check site loading by different locations in the world
10/27/2008 - Fix the SQL Connection Problems
10/26/2008 - Encrypt Connection Information
10/25/2008 - Generate Sitemap for your Site
10/23/2008 - Introduction to Design Patterns
10/21/2008 - Differences between Components, Controls, and Behaviors
10/20/2008 - What Is LINQ to SQL
10/19/2008 - Evolution of SQL Server
10/16/2008 - Loading Master Pages Dynamically in ASP.NET 3.5
10/15/2008 - A Brief Overview of Validation in ASP.NET 3.5
10/14/2008 - Automatically Hiding the Login Control from Authenticated Users
10/9/2008 - Check the load time of your website
10/5/2008 - Screw it, Lets RE-Design it all
10/2/2008 - Additional ASP.NET AJAX Libraries
9/29/2008 - The Big Problem of WYSIWYG Editors
9/29/2008 - New Forum for ASP.NET and Web Started
9/25/2008 - Optimize Page Loading Part 2 - Tips When work with Images
9/23/2008 - 10 Design Tips
9/19/2008 - C Sharp Features in Framework 3.0
9/15/2008 - Optimize Page Loading - 20 General Tips and Tricks
9/7/2008 - what is asp.net
9/5/2008 - Why Client Validation is not enough to secure our web app
8/29/2008 - Optimize Page Loading when works with DataBase
8/20/2008 - Highlight text in GridView using javascript
8/4/2008 - ContentPlaceHolder in title tag, Is That Bug in VS 2008
8/1/2008 - Why should we use ResolveUrl
7/31/2008 - Guid.TryParse in Framework 3.5
7/30/2008 - Redirect to current page
7/28/2008 - Validate Max Length of TextBox text
7/24/2008 - Easiest way for Row Numbering in GridView
7/23/2008 - Framework 3.5 Disadvantage of lamda expressions
7/21/2008 - LINQ - display filed from parent table in LinqDataSource and GridView
7/17/2008 - LinqDataSource and Guid passed as QueryStringParameter
7/14/2008 - Inappropriate name of DetailsView in msdn
7/9/2008 - Hide form after user download file
7/7/2008 - Menu in Master Page. How to set selected item from Page
7/4/2008 - Overview of New in Framework 3.5
7/2/2008 - New in Framework 3.5 - Generic Class HashSet
7/2/2008 - Present XmlDataSource data with Repeater
7/1/2008 - How to Validate ImageButton control through W3C
6/30/2008 - Using Find Method in Generic Controls With VB.NET - List
6/30/2008 - Using Find Method in Generic Controls With CSharp - List of T
6/30/2008 - Script injections using ASP.NET

Links

 

Create Yes No Voting Control

Posted by Tihomir Ivanov on 20 December 2008 12:35
Rating: 0.00

We've decided to change the products and articles voting system. Now you can vote only with yes or no:

Yes No Control

Few words how it works: when user view page it has two pictures for voting (for yes and no), both are grey and he can vote by clicking on some of them. If he vote yes (clicking on yes picture) it becomes green and everytime he open the page, he'll see the green image, and the both picture won't be enabled for voting.

in this article we'll describe all issues when creating such control:

0. created neccessary db tables.

We have a table when save all votes:

...
CREATE TABLE [DB_CHEME].[Ratings](
...
[HostAddress] [nvarchar](20) NOT NULL,
[Vote] [bit] NOT NULL,

...
)

it's important to have HostAddress (the IP) of the user (next time he visits the page, you'll be able to check if he has already pass a vote),

Vote is bit (true or false), it's his vote.

1. create user control (ascx) and add this code there:

<asp:ImageButton ID="_yesBtn" runat="server" onclick="_yesBtn_Click" CausesValidation="false" />&nbsp;<asp:Label ID="_yesLbl" runat="server"></asp:Label>&nbsp;&nbsp;&nbsp;<asp:ImageButton
ID="_noBtn" runat="server" onclick="_noBtn_Click" CausesValidation="false" />&nbsp;<asp:Label ID="_noLbl" runat="server"></asp:Label>

2. code behind class:

private const string _none_yes = "grey_y.gif"; // picture for yes (before user vote)
private const string _none_no = "grey_n.gif"; // picture for no (before user vote)
private const string _no = "no.gif"; // picture for no, after user vote no
private const string _yes = "yes.gif"; // picture for yes, after user vote yes

private string _images_path = "../images/yn/"; // path for the necessary pictures

#region Events

protected void Page_Load(object sender, EventArgs e)
{

if (!IsPostBack)
{

//TODO Add code here to check if the current user has already voted.

if (didntVote)
{
  FillNone(); // you can see this function below
}
else if (votedYes)
{
FillYes(); // // you can see this function below
}
else
{
FillNo(); // // you can see this function below
}
}

protected void _yesBtn_Click(object sender, ImageClickEventArgs e)
{
//TODO: register new vote for yes

FillYes();
}

protected void _noBtn_Click(object sender, ImageClickEventArgs e)
{

//TODO: register new vote for no

FillNo();

}

#endregion

#region Private Methods

private void FillNone()
{
_yesBtn.ImageUrl = _images_path + _none_yes;
_noBtn.ImageUrl = _images_path + _none_no;

_yesBtn.Attributes.Add("onmouseover", "src='" + _images_path + _yes + "' ");
_yesBtn.Attributes.Add("onmouseout", "src='" + _images_path + _none_yes + "' ");

_yesBtn.AlternateText = "it's cool!";
_noBtn.AlternateText = "it's NO cool!";

_noBtn.Attributes.Add("onmouseover", "src='" + _images_path + _no + "' ");
_noBtn.Attributes.Add("onmouseout", "src='" + _images_path + _none_no + "' ");
}

private void FillYes()
{
_yesBtn.ImageUrl = _images_path + _yes;
_yesBtn.Enabled = false;

_noBtn.ImageUrl = _images_path + _none_no;
_noBtn.Enabled = false;
}

}

#endregion

 

That's All, I hope this article'll be useful to someone else too :)

 

 Comments:
hu Posted by Alek on 31 December 2008 09:26   Rating: -
Hi. Good site.
 Add New Comment:
Name*:    Rating:
E-mail*:
Website:
Country:  Country flag
Comment*:
B I U url img quote                                    
Created By AspNetSource.com
Are you human ?      


 
Asp Net Source.com


 
Our Sponsors:  Asp.net file upload component  |   Flash file uploader