PDA

View Full Version : آموزش :: ساخت سیستم نظرسنجی



rtech
چهارشنبه 05 اردیبهشت 1386, 12:47 عصر
کلیه حقوق این مظلب متعلق به سایت www.Barnamenevis.org میباشد .
نقل از نوشته های این مقاله منوط به ذکر نام منبع و نویسنده آن است.

با سلام و با اجازه اساتید .
حتما برای شما پیش آمده باشد که بخواهید یک سیستم نظرسنجی در سایت خود قرار دهید اما شاید وقت ساخت این سیستم را نداشته باشید . به همین خاطر من آموزش ساخت این سیستم را برای شما آماده کردم که امیدوارم مفید واقع بشه :

ابتدا از ساخت بانک اطلاعاتی و جداول مورد نیاز برای این سیستم شروع میکنیم .
برای ساخت این سیستم از سه جدول استفاده میکنیم :

1 - PollQuestions : این جدول شامل فیلدهای زیر میباشد و برای ذخیره سوالات نظر سنجی استفاده میشود :


http://tapsait4.persiangig.com/image/p1.JPG


PollID : این فیلد برای ذخیره ID مورد نظر استفاده میشود و آن را به صورت کلید اصلی تعریف میکنیم . Identity این فیلد را نیز Yes میکنیم .
AddedDate : تاریخ اضافه شدن سوال را مشخص میکند .
AddedBy : مشخص میکند این سوال توسط چه کسی ایجاد شده و این برای سایتهایی که چند مدیر دارند بسیار مناسب خواهد بود .
QuestionText : همانطور که از نام فیلد مشخص میباشد برای ذخیره سوال نظر سنجی استفاده میشود .
IsCurrent : مشخص میکند که آیا این نظرسنجی به عنوان نظرسنجی فعال انتخاب شود یا خیر .
IsArchived : که برای آرشیو کردن نظرسنجی ها به کار میرود
ArchivedDate : که تاریخ آرشیو شدن را نشان میدهد .

بر این اساس نظرسنجی فعال خواهد بود که Iscurrent آن برابر 1 و IsArchived آن برابر 0 باشد.

2 - PollOptions : برای ذخیره Option های نظرسنجی به کار میرود و شامل فیلدهای زیر میباشد :



http://tapsait4.persiangig.com/image/p2.JPG


OptionID : برای ذخیره ID انتخاب ها به کار میرود ( Identity برابر 1 انتخاب شود - کلید اصلی )
AddedDate : تاریخ اضافه شدن .
AddedBy : فرد ایجاد کننده .
ID : PollID نظرسنجی که انتخاب ها مربوط به آن است .
OptionText : متن انتخاب ها .
Votes : تعداد رای های مربوط به این انتخاب .

3 - PollResult : این جدول برای ذخیره کاربرانی که به نظرسنجی ها رای میدهند استفاده میشود که شامل فیلدهای زیر میباشد :



http://tapsait4.persiangig.com/image/p3.JPG


ID : Poll ID نظرسنجی فعال
PollChoice : گزینه ای که توسط کاربر انتخاب شده .
MemberID : نام کاربری یا ID کاربر .

این جدول برای این استفاده میشود که بتوانیم تشخیص دهیم که چه کسی به این نظر سنجی رای داده است تا اگر خواست برای بار دوم رای دهد از این عمل وی جلوگیری کنیم . اگر میخواهید فقط کاربران عضو رای دهند میتوانید از MemberID برای ذخیره آنها استفاده کنید و اگر میخواهید کاربران مهمان هم رای دهند میتوانید از IP آنها استفاده کنید یا اینکه به جای استفاده از این جدول میتوانید از کوکی ها استفاده کنید ( که البته من این مورد رو پیشنهاد نمیکنم )
میرویم سر اصل مطلب :
------------------------

* ذخیره نظر سنجی ها در بانک *
با توجه به اینکه عمل ذخیره کردن سوالات و انتخاب ها با چند دستور ساده Insert انجام میشود از این قسمت میگذریم و به مرحله بعد میریم ( البته اگر در این قسمت مشکلی داشتید سوال کنید ) Stored Procedure های ذخیره در فایل Sample موجود است که میتوانید از آنها استفاده کنید .
توجه : مقدار فیلد Votes در جدول PollOptions باید در زمان ایجاد انتخاب ها 0 باشد .

------------------------

** بازیابی نظرسنجی از بانک و قرار دادن آن در صفحه **
من برای این کار از کنترل PollControl استفاده کردم این ابزار کاملا رایگان میباشد اما قبل از استفاده از آن به بررسی خصوصیات این کنترل میپردازم :
Properties :
Canvote : اگر مقدار آن را True کنید کنترل به مود انتخاب میرود و کاربر میتواند یکی از گزینه ها را انتخاب کند و اگر مقدار آن را False کنید به مود نمایش میرود .

PollQuestion : سوالی که به کاربر نشان داده میشود .

CSSCaption : کلاس استایل شیت مربوط به Caption و سوال را مشخص میکند
CssPollClass : کلاس مورد استفاده کنترل را مشخص میکند .
ImagesFolder : پوشه حاوی تصاویر مربوط به این کنترل را مشخص میکند .
VoteCaption : متنی را نشان میدهد که تعداد کل آراء را نشان میدهد به عنوان مثال : ( تعداد آراء : )

همچنین این کنترل یک Event به نام CastVote نیز دارد که وقتی کاربر دکمه تایید را انتخاب میکند رخ میدهد .

اما برای استفاده از این کنترل فایل PollControl.Dll و فولدر Image مربوط و همچنین فایل های CSS مربوط به این کنترل را به پروژه اضافه میکنیم و از تگ زیر برای استفاده از آن استفاده میکنیم :



<%@ Register Assembly="PollControl" Namespace="EccSoft.Web.UI" TagPrefix="cc1" %>

و یک نمونه از این کنترل را در صفحه قرار میدیم :



<cc1:PollControl id="Pollcontrol1" runat="server" csscaption="PollCaption" cssclass="Normal"
csspollclass="PollBack" votescaption="تعداد آراء :"
width="206px" style="font-family: tahoma" Font-Names="tahoma"></cc1:PollControl>


امیدوارم که خسته نشده باشید .
حالا میرسیم به جایی که باید نظرسنجی را از بانک بخونیم و در این کنترل قرار دهید .
برای اینکه ما باید نظرسنجی فعال را از بانک بگیریم و در کنترل قرار دهیم :
در Page_Load کدهای زیر را وارد کنید :


Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrin gs("UserPolls").ToString)
Dim cmd As SqlCommand
Dim cmdtext As String
Dim obj As SqlDataReader

If Not Me.Page.IsPostBack Then
Pollcontrol1.CanVote = True
' Add Question Text To Poll Control
cmdtext = "select QuestionText from PollQuestions where Iscurrent=1 and Isarchived=0"
cmd = New SqlCommand(cmdtext, connection)
connection.Open()
Pollcontrol1.PollQuestion = cmd.ExecuteScalar
connection.Close()


cmdtext = "select optionID,PollID,OptionText,Votes from PollOptions where pollID in(select PollID from Pollquestions where Iscurrent=1 and Isarchived=0)"
cmd = New SqlCommand(cmdtext, connection)
connection.Open()
obj = cmd.ExecuteReader
' Add Options To Poll Control :
While obj.Read
Pollcontrol1.AddPollAnswer(obj("pollID"), obj("optionID"), obj("optionText"), obj("votes"))
End While
connection.Close()
obj.Close()

End If


خوب ما در اینجا متن سوال و option های آن را از جداول PollQuestion و PollOptions گرفتیم و در کنترل Poll Control قرار دادیم . یک بار برنامه را در مرورگر اجرا کنید :



http://tapsait4.persiangig.com/image/p4.JPG


همانطور که ملاحظه میکنید سوال و option های نظر سنجی با موفقیت در کنترل قرار گرفته اند.
حالا باید ایونت مربوط به کلیک کاربر را بنویسیم :
کدهای زیر را به ایونت Pollcontrol1_CastVote اضافه کنید ( به علت کمبود وقت من بدون چک کردن MemberID انتخاب کاربر را در بانک ذخیره میکنم )



' Update PollOptions Without Check MemberID
Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrin gs("UserPolls").ToString)
Dim com As New SqlCommand("update pollOptions set answercount=answercount+'1' where OptionID=@answerID", connection)
connection.Open()
com.Parameters.Add("@optionID", SqlDbType.Int).Value = Int(AnswerId)
com.ExecuteNonQuery()
connection.Close()
Response.Redirect("result.aspx")


شما میتوانید از کوکی ، IP و یا کدکاربری و .. برای تشخیص کاربر رای دهنده استفاده کنید.
خوب ما در اینجا به مقدار فیلد Votes یکی اضافه میکنیم و سپس برای نمایش نتیجه به صفحه Result میرویم .
اما در Page_load صفحه Result کدهای زیر را مینویسیم :



Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrin gs("UserPolls").ToString)
Dim cmd As SqlCommand
Dim cmdtext As String
Dim obj As SqlDataReader

If Not Me.Page.IsPostBack Then
Pollcontrol1.CanVote = False
cmdtext = "select optionID,PollID,OptionText,Votes from PollOptions where pollID in(select PollID from Pollquestions where Iscurrent=1 and Isarchived=0)"
cmd = New SqlCommand(cmdtext, connection)
connection.Open()
obj = cmd.ExecuteReader
' Add Options To Poll Control :
While obj.Read
Pollcontrol1.AddPollAnswer(obj("pollID"), obj("optionID"), obj("optionText"), obj("votes"))
End While
connection.Close()
obj.Close()

End If


اگر دقت کرده باشید ما در اینجا Canvatoes را برایر False قرار دادیم تا به مد نمایش نتایج برویم .
نتیجه را در مرورگر خود ببینید :



http://tapsait4.persiangig.com/p5.JPG


خوب در اینجا کار به پایان رسیده و شما با موفقیت یک سیستم نظر سنجی ساختید .

موفق و پیروز باشید .
نویسنده : رامین احمدی

::::::::::: لطفا برای تشکر به جای ایجاد پست جدید از دکمه تشکر استفاده نمایید :::::::::::::

دانلود سورس :

rezafars
چهارشنبه 05 اردیبهشت 1386, 14:13 عصر
سلام من از شما برای استفاده از این کد در asp.net 2003 کمک کی خوام

rtech
چهارشنبه 05 اردیبهشت 1386, 14:42 عصر
شما در VS 2003 چه مشکلی دارید ؟

rtech
چهارشنبه 05 اردیبهشت 1386, 22:16 عصر
فکر نمیکنم برای اجرا در محیط 2003 مشکلی داشته باشید !

rezafars
پنج شنبه 06 اردیبهشت 1386, 15:15 عصر
این کنترل PollControl در کد نویسی ایراد می گیره

rtech
پنج شنبه 06 اردیبهشت 1386, 19:42 عصر
چه اروری دریافت کردید ؟

rezafars
یک شنبه 09 اردیبهشت 1386, 12:05 عصر
با سلام
با کد نویسی این کد در ویرایش گر html در قسمت برنامه نویسی چنین کنترلی رو قبول نمی کند

hamidyha
دوشنبه 10 اردیبهشت 1386, 12:12 عصر
با سلام
من با نرم افزار دریم ویوور سایت طراحی کرده ام پس از ایجاد بانک اطلاعاتی در SQL Server دو مشکل دارم
1- در ارتباط با بانک خطا تولید می کند در صورتی که اگر بانک Access باشد مشکلی ندارد وقت خروجی دیتا را نمایش نمی‌دهد.
2- کدهای نوشته شده را در کجای صفحه وارد نمایم
با تشکر

rtech
چهارشنبه 12 اردیبهشت 1386, 09:11 صبح
با سلام
من با نرم افزار دریم ویوور سایت طراحی کرده ام پس از ایجاد بانک اطلاعاتی در SQL Server دو مشکل دارم
1- در ارتباط با بانک خطا تولید می کند در صورتی که اگر بانک Access باشد مشکلی ندارد وقت خروجی دیتا را نمایش نمی‌دهد.
2- کدهای نوشته شده را در کجای صفحه وارد نمایم
با تشکر

1 - لطفا کدی که برای کانکت شدن نوشتید را اینجا بزارید تا ببینم خطا برای چیست
2 - آیا شما از Asp.net برای نوشتن کدهاتون استفاده میکنید ؟ اگر جواب بله میباشد اگر به فایل ضمیمه توجه کنید متوجه خواهید شد که در کجا باید استفاده کنید .

hamidyha
یک شنبه 16 اردیبهشت 1386, 16:20 عصر
در نرم افزار دریم ویور در بخش Application روی گزینه Database کلیک می‌کنم و ... که تصویر آن ضمیمه می‌باشد. لطفاً راهنمایی کنید

oracle_2007
شنبه 15 تیر 1387, 17:21 عصر
سلام دوست عزيز
ميشه لطف كنين بگين براي اينكه تعداد آراء رو در بالاي كنترل برداريم ، بايد چيكار كنم ؟(البته فقط در قسمت مربوط به راي دادن )ممنونم

jafaripur
چهارشنبه 18 دی 1387, 16:15 عصر
لااقل به اسم خودت که میزنی بگو که فقط ترجمش کردی ...
لینک اصلی این کنتل : http://www.codeproject.com/KB/aspnet/Site_Poll_Control.aspx

jafaripur
جمعه 20 دی 1387, 17:20 عصر
فقط یه ایراد داره و این هستش که وقتی هیچ کدوم از گزینه ها رو انتخاب نمی کنید با وجود این که اولین گزینه انتخاب شده ولی با کلیک بر روی یکی از گزینه ها AnswerID درست رو میفرسته واگر نه اگر کلیک نکنید مقدار AnswerID =1 میفرسته ...
نسخه اصلاح شده کنترل رو میزارم ...
سورس رو می زارم که اگه خواستین تغییر بدینش ... :چشمک:

mh_663
شنبه 09 خرداد 1388, 14:07 عصر
با سلام.
میشه در مورد دیتا تایپ فیلدها و رلیشن شیپ و کلا جزییات دیتابیس مربوط به نظرسنجی توضیحی بدین؟
با تشکر:لبخندساده:

reza1078
سه شنبه 23 تیر 1388, 01:50 صبح
اگه برای c# هم انجام می دادید عالی می شد

asd_moghadas
سه شنبه 06 مرداد 1388, 11:49 صبح
کد سی شارپ ؟

amirkhoyli
شنبه 07 آذر 1388, 18:41 عصر
باسلام
آیا بانک اطلاعاتی موحود بر روی ایم فایل از نوع sql2000 هست؟
آخم من نمیتونم بر روی sql2000 این فایل را attach کنم......

jingiliboyz
یک شنبه 18 بهمن 1388, 13:54 عصر
من برنامه رو گرفتم اجرا شد ایراد هم نگرفت مرسی از همه دوستان

ghazizadeh
دوشنبه 17 اسفند 1388, 12:44 عصر
کد سی شارپ

protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
return;


string connStr = "packet size=4096;Data Source=192.168.1.233,1433;Network Library=DBMSSOCN;Initial Catalog=*****;User ID=****;Password=****";
SqlConnection connpoll = new SqlConnection(connStr);
poll1.CanVote = true;
string cmdtext = "select QuestionText from PollQuestions where Iscurrent=1 and Isarchived=0";
SqlCommand cmd = new SqlCommand(cmdtext, connpoll);
connpoll.Open();

poll1.PollQuestion = (string) cmd.ExecuteScalar();
// connpoll.Close();
cmdtext = "select optionID,PollID,OptionText,Votes from PollOptions where pollID in(select PollID from Pollquestions where Iscurrent=1 and Isarchived=0)";
cmd = new SqlCommand(cmdtext, connpoll);
// connpoll.Open();
SqlDataReader objpoll = cmd.ExecuteReader();
while (objpoll.Read())
{
poll1.AddPollAnswer((int)objpoll["pollID"], (int)objpoll["optionID"], (string)objpoll["optionText"],(int) objpoll["votes"]);
}
connpoll.Close();
objpoll.Close();


}

protected void poll1_CastVote(int PollId, string AnswerId, int MemberId)
{
// Update PollOptions Without Check MemberID
lblPDate.Text = "ddddd";
string connStr2 = "packet size=4096;Data Source=192.168.1.233,1433;Network Library=DBMSSOCN;Initial Catalog=***;User ID=****;Password=***x";
SqlConnection connpoll = new SqlConnection(connStr2);
SqlCommand conn2 = new SqlCommand("update pollOptions set votes=votes+'1' where OptionID=@optionID", connpoll);
connpoll.Open();
conn2.Parameters.Add("@optionID", SqlDbType.Int).Value = Convert.ToUInt32(AnswerId);
conn2.ExecuteNonQuery();
connpoll.Close();
Response.Redirect("result.aspx");
}

این هم کد نتیجه نظرسنجی
protected void Page_Load(object sender, EventArgs e)
{

string connStr = "packet size=4096;Data Source=192.168.1.233,1433;Network Library=DBMSSOCN;Initial Catalog=****;User ID=****l;Password=****x";
SqlConnection connpoll = new SqlConnection(connStr);
poll1.CanVote = false;
string cmdtext = "select optionID,PollID,OptionText,Votes from PollOptions where pollID in(select PollID from Pollquestions where Iscurrent=1 and Isarchived=0)";
SqlCommand cmd = new SqlCommand(cmdtext, connpoll);
connpoll.Open();

SqlDataReader objpoll = cmd.ExecuteReader();
while (objpoll.Read())
{

poll1.AddPollAnswer((int)objpoll["pollID"], (int)objpoll["optionID"], (string)objpoll["optionText"], (int)objpoll["votes"]);
}
connpoll.Close();
objpoll.Close();

}

rezvan.j
شنبه 05 تیر 1389, 02:31 صبح
سلام دوستان .

من می خوام از این کنترل استفاده کنم ولی اون رو در کنترل هام ندارم choss item چنین گزینه ای نداره .

nasr
یک شنبه 31 مرداد 1389, 08:49 صبح
سلام
کسی این را برای سی شارپ نداره؟

ممنون

nasr
یک شنبه 31 مرداد 1389, 10:19 صبح
سلام
من تبدیلش کردم به C sharp
امیدوارم به دردتون بخوره

hamid_cross
یک شنبه 31 مرداد 1389, 15:33 عصر
آقا سلام من تازه می خوام سی شارپ یاد بگیرم از کجا باید شروع کنم

SianiD
جمعه 02 اردیبهشت 1390, 23:51 عصر
سلام
من تبدیلش کردم به C sharp
امیدوارم به دردتون بخوره
دوست عزیز من خیلی سعی کردم بازش کنم اما نشد :(

dontbehzad
پنج شنبه 03 شهریور 1390, 19:16 عصر
دستتون درد نکنه.
خیلی خوبه. ایراد هم نداره فقط یه اشکال کوچیک داره اونم اینکه :
obj.Close() قبل از connection.Close() باید بیاید ! نه بعدش

سوال چطوری border دور باتن رای دهید را بردارم یا عکس این باتن را تغییر بدم ؟

nadia2174
جمعه 14 بهمن 1390, 18:16 عصر
سلام. من کد شما رو به C# تبدیل کردم ولی خطاهای زیادی میده و نمیدونم چطور درستش کنم.
اگه ممکنه کد C# این آموزش رو هم بزارید.
ممنون

amir22448
دوشنبه 13 شهریور 1391, 21:11 عصر
کلیه حقوق این مظلب متعلق به سایت www.Barnamenevis.org میباشد .
نقل از نوشته های این مقاله منوط به ذکر نام منبع و نویسنده آن است.

با سلام و با اجازه اساتید .
حتما برای شما پیش آمده باشد که بخواهید یک سیستم نظرسنجی در سایت خود قرار دهید اما شاید وقت ساخت این سیستم را نداشته باشید . به همین خاطر من آموزش ساخت این سیستم را برای شما آماده کردم که امیدوارم مفید واقع بشه :

ابتدا از ساخت بانک اطلاعاتی و جداول مورد نیاز برای این سیستم شروع میکنیم .
برای ساخت این سیستم از سه جدول استفاده میکنیم :

1 - PollQuestions : این جدول شامل فیلدهای زیر میباشد و برای ذخیره سوالات نظر سنجی استفاده میشود :


http://tapsait4.persiangig.com/image/p1.JPG


PollID : این فیلد برای ذخیره ID مورد نظر استفاده میشود و آن را به صورت کلید اصلی تعریف میکنیم . Identity این فیلد را نیز Yes میکنیم .
AddedDate : تاریخ اضافه شدن سوال را مشخص میکند .
AddedBy : مشخص میکند این سوال توسط چه کسی ایجاد شده و این برای سایتهایی که چند مدیر دارند بسیار مناسب خواهد بود .
QuestionText : همانطور که از نام فیلد مشخص میباشد برای ذخیره سوال نظر سنجی استفاده میشود .
IsCurrent : مشخص میکند که آیا این نظرسنجی به عنوان نظرسنجی فعال انتخاب شود یا خیر .
IsArchived : که برای آرشیو کردن نظرسنجی ها به کار میرود
ArchivedDate : که تاریخ آرشیو شدن را نشان میدهد .

بر این اساس نظرسنجی فعال خواهد بود که Iscurrent آن برابر 1 و IsArchived آن برابر 0 باشد.

2 - PollOptions : برای ذخیره Option های نظرسنجی به کار میرود و شامل فیلدهای زیر میباشد :



http://tapsait4.persiangig.com/image/p2.JPG


OptionID : برای ذخیره ID انتخاب ها به کار میرود ( Identity برابر 1 انتخاب شود - کلید اصلی )
AddedDate : تاریخ اضافه شدن .
AddedBy : فرد ایجاد کننده .
ID : PollID نظرسنجی که انتخاب ها مربوط به آن است .
OptionText : متن انتخاب ها .
Votes : تعداد رای های مربوط به این انتخاب .

3 - PollResult : این جدول برای ذخیره کاربرانی که به نظرسنجی ها رای میدهند استفاده میشود که شامل فیلدهای زیر میباشد :



http://tapsait4.persiangig.com/image/p3.JPG


ID : Poll ID نظرسنجی فعال
PollChoice : گزینه ای که توسط کاربر انتخاب شده .
MemberID : نام کاربری یا ID کاربر .

این جدول برای این استفاده میشود که بتوانیم تشخیص دهیم که چه کسی به این نظر سنجی رای داده است تا اگر خواست برای بار دوم رای دهد از این عمل وی جلوگیری کنیم . اگر میخواهید فقط کاربران عضو رای دهند میتوانید از MemberID برای ذخیره آنها استفاده کنید و اگر میخواهید کاربران مهمان هم رای دهند میتوانید از IP آنها استفاده کنید یا اینکه به جای استفاده از این جدول میتوانید از کوکی ها استفاده کنید ( که البته من این مورد رو پیشنهاد نمیکنم )
میرویم سر اصل مطلب :
------------------------

* ذخیره نظر سنجی ها در بانک *
با توجه به اینکه عمل ذخیره کردن سوالات و انتخاب ها با چند دستور ساده Insert انجام میشود از این قسمت میگذریم و به مرحله بعد میریم ( البته اگر در این قسمت مشکلی داشتید سوال کنید ) Stored Procedure های ذخیره در فایل Sample موجود است که میتوانید از آنها استفاده کنید .
توجه : مقدار فیلد Votes در جدول PollOptions باید در زمان ایجاد انتخاب ها 0 باشد .

------------------------

** بازیابی نظرسنجی از بانک و قرار دادن آن در صفحه **
من برای این کار از کنترل PollControl استفاده کردم این ابزار کاملا رایگان میباشد اما قبل از استفاده از آن به بررسی خصوصیات این کنترل میپردازم :
Properties :
Canvote : اگر مقدار آن را True کنید کنترل به مود انتخاب میرود و کاربر میتواند یکی از گزینه ها را انتخاب کند و اگر مقدار آن را False کنید به مود نمایش میرود .

PollQuestion : سوالی که به کاربر نشان داده میشود .

CSSCaption : کلاس استایل شیت مربوط به Caption و سوال را مشخص میکند
CssPollClass : کلاس مورد استفاده کنترل را مشخص میکند .
ImagesFolder : پوشه حاوی تصاویر مربوط به این کنترل را مشخص میکند .
VoteCaption : متنی را نشان میدهد که تعداد کل آراء را نشان میدهد به عنوان مثال : ( تعداد آراء : )

همچنین این کنترل یک Event به نام CastVote نیز دارد که وقتی کاربر دکمه تایید را انتخاب میکند رخ میدهد .

اما برای استفاده از این کنترل فایل PollControl.Dll و فولدر Image مربوط و همچنین فایل های CSS مربوط به این کنترل را به پروژه اضافه میکنیم و از تگ زیر برای استفاده از آن استفاده میکنیم :



<%@ Register Assembly="PollControl" Namespace="EccSoft.Web.UI" TagPrefix="cc1" %>

و یک نمونه از این کنترل را در صفحه قرار میدیم :



<cc1:PollControl id="Pollcontrol1" runat="server" csscaption="PollCaption" cssclass="Normal"
csspollclass="PollBack" votescaption="تعداد آراء :"
width="206px" style="font-family: tahoma" Font-Names="tahoma"></cc1:PollControl>


امیدوارم که خسته نشده باشید .
حالا میرسیم به جایی که باید نظرسنجی را از بانک بخونیم و در این کنترل قرار دهید .
برای اینکه ما باید نظرسنجی فعال را از بانک بگیریم و در کنترل قرار دهیم :
در Page_Load کدهای زیر را وارد کنید :


Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrin gs("UserPolls").ToString)
Dim cmd As SqlCommand
Dim cmdtext As String
Dim obj As SqlDataReader

If Not Me.Page.IsPostBack Then
Pollcontrol1.CanVote = True
' Add Question Text To Poll Control
cmdtext = "select QuestionText from PollQuestions where Iscurrent=1 and Isarchived=0"
cmd = New SqlCommand(cmdtext, connection)
connection.Open()
Pollcontrol1.PollQuestion = cmd.ExecuteScalar
connection.Close()


cmdtext = "select optionID,PollID,OptionText,Votes from PollOptions where pollID in(select PollID from Pollquestions where Iscurrent=1 and Isarchived=0)"
cmd = New SqlCommand(cmdtext, connection)
connection.Open()
obj = cmd.ExecuteReader
' Add Options To Poll Control :
While obj.Read
Pollcontrol1.AddPollAnswer(obj("pollID"), obj("optionID"), obj("optionText"), obj("votes"))
End While
connection.Close()
obj.Close()

End If


خوب ما در اینجا متن سوال و option های آن را از جداول PollQuestion و PollOptions گرفتیم و در کنترل Poll Control قرار دادیم . یک بار برنامه را در مرورگر اجرا کنید :



http://tapsait4.persiangig.com/image/p4.JPG


همانطور که ملاحظه میکنید سوال و option های نظر سنجی با موفقیت در کنترل قرار گرفته اند.
حالا باید ایونت مربوط به کلیک کاربر را بنویسیم :
کدهای زیر را به ایونت Pollcontrol1_CastVote اضافه کنید ( به علت کمبود وقت من بدون چک کردن MemberID انتخاب کاربر را در بانک ذخیره میکنم )



' Update PollOptions Without Check MemberID
Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrin gs("UserPolls").ToString)
Dim com As New SqlCommand("update pollOptions set answercount=answercount+'1' where OptionID=@answerID", connection)
connection.Open()
com.Parameters.Add("@optionID", SqlDbType.Int).Value = Int(AnswerId)
com.ExecuteNonQuery()
connection.Close()
Response.Redirect("result.aspx")


شما میتوانید از کوکی ، IP و یا کدکاربری و .. برای تشخیص کاربر رای دهنده استفاده کنید.
خوب ما در اینجا به مقدار فیلد Votes یکی اضافه میکنیم و سپس برای نمایش نتیجه به صفحه Result میرویم .
اما در Page_load صفحه Result کدهای زیر را مینویسیم :



Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrin gs("UserPolls").ToString)
Dim cmd As SqlCommand
Dim cmdtext As String
Dim obj As SqlDataReader

If Not Me.Page.IsPostBack Then
Pollcontrol1.CanVote = False
cmdtext = "select optionID,PollID,OptionText,Votes from PollOptions where pollID in(select PollID from Pollquestions where Iscurrent=1 and Isarchived=0)"
cmd = New SqlCommand(cmdtext, connection)
connection.Open()
obj = cmd.ExecuteReader
' Add Options To Poll Control :
While obj.Read
Pollcontrol1.AddPollAnswer(obj("pollID"), obj("optionID"), obj("optionText"), obj("votes"))
End While
connection.Close()
obj.Close()

End If


اگر دقت کرده باشید ما در اینجا Canvatoes را برایر False قرار دادیم تا به مد نمایش نتایج برویم .
نتیجه را در مرورگر خود ببینید :



http://tapsait4.persiangig.com/p5.JPG


خوب در اینجا کار به پایان رسیده و شما با موفقیت یک سیستم نظر سنجی ساختید .

موفق و پیروز باشید .
نویسنده : رامین احمدی

::::::::::: لطفا برای تشکر به جای ایجاد پست جدید از دکمه تشکر استفاده نمایید :::::::::::::

دانلود سورس :


سلام خیلی خوب بود ولی اگه می شه به زبان C# هم بزارید.:لبخندساده:

amir22448
دوشنبه 13 شهریور 1391, 21:17 عصر
آقا سلام من تازه می خوام سی شارپ یاد بگیرم از کجا باید شروع کنم

سلام. بهتره از کتاب های انگیلیسی شروع کنید.این کتاب مفیده:

http://books.google.com/books?id=pKTlXWg0MTgC&printsec=frontcover&dq=Learning+Special+C%23&source=bl&ots=oZE2pBKCAI&sig=PSL9wwzt8NSx8d0hzzjrouI8-6E&hl=en&sa=X&ei=mOREUIvEEcfNhAfh2IDYCw&ved=0CC4Q6AEwAA#v=onepage&q=Learning%20Special%20C%23&f=false

razeghaik1
شنبه 08 مهر 1391, 10:23 صبح
سلام.دوستان کسی کد C# این مطلب (ساخت سیستم نظر سنجی رو داره؟!)
من تبدیلش کردم اما چواب نداد و ارور می ده و کدی هم که این دوستمون قرار داد باز جواب نداد.

fakhravari
پنج شنبه 27 مهر 1391, 12:59 عصر
سورس این برنامه به زبان vb ایا دوستان C#‎ دارن!!
از سایت های convert هم استفاده کردم اما خطا داره.:متفکر: