** بازيابي نظرسنجي از بانک و قرار دادن آن در صفحه **
من براي اين کار از کنترل 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" %>
و يک نمونه از اين کنترل را در صفحه قرار ميديم :
کد:
csspollclass="PollBack" votescaption="تعداد آراء :"
width="206px" style="font-family: tahoma" Font-Names="tahoma">
اميدوارم که خسته نشده باشيد .
حالا ميرسيم به جايي که بايد نظرسنجي را از بانک بخونيم و در اين کنترل قرار دهيد .
براي اينکه ما بايد نظرسنجي فعال را از بانک بگيريم و در کنترل قرار دهيم :
در Page_Load کدهاي زير را وارد کنيد :
کد:
Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrings("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 قرار داديم . يک بار برنامه را در مرورگر اجرا کنيد :

همانطور که ملاحظه ميکنيد سوال و option هاي نظر سنجي با موفقيت در کنترل قرار گرفته اند.
حالا بايد ايونت مربوط به کليک کاربر را بنويسيم :
کدهاي زير را به ايونت Pollcontrol1_CastVote اضافه کنيد ( به علت کمبود وقت من بدون چک کردن MemberID انتخاب کاربر را در بانک ذخيره ميکنم )
کد:
' Update PollOptions Without Check MemberID
Dim connection As New SqlConnection(ConfigurationManager.ConnectionStrings("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.ConnectionStrings("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 قرار داديم تا به مد نمايش نتايج برويم .
نتيجه را در مرورگر خود ببينيد :

خوب در اينجا کار به پايان رسيده و شما با موفقيت يک سيستم نظر سنجي ساختيد .
موفق و پيروز باشيد .
منبع:barnamenevis.org
+ نوشته شده توسط الهه رحمانزاده در پنجشنبه سوم خرداد 1386 و ساعت
11:40 |