Due to changes in DNN 4.5 any Survey version ealier than 04.00.70 will not work with DNN4.5 . A new version has been submitted to te release process but it may take a week or two. To fix an ealier version of te Survey module, replace this method in Survey.ascx.vb with this code:
#Region "Form Events"
Private Sub lstSurvey_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles lstSurvey.ItemDataBound
Dim objSurvey As SurveyInfo = SurveyController.GetSurvey(Int32.Parse(lstSurvey.DataKeys(e.Item.ItemIndex).ToString), ModuleId)
If Not objSurvey Is Nothing Then
Dim SurveyOptionList As New List(Of SurveyOptionInfo)
SurveyOptionList = SurveyOptionController.GetSurveyOptions(objSurvey.SurveyId)
Select Case objSurvey.OptionType
Case "R"
Dim optOptions As RadioButtonList = CType(e.Item.FindControl("optOptions"), RadioButtonList)
optOptions.DataSource = SurveyOptionList
optOptions.DataTextField = "OptionName"
optOptions.DataValueField = "SurveyOptionId"
optOptions.DataBind()
optOptions.Visible = True
Case "C"
Dim chkOptions As CheckBoxList = CType(e.Item.FindControl("chkOptions"), CheckBoxList)
chkOptions.DataSource = SurveyOptionList
chkOptions.DataTextField = "OptionName"
chkOptions.DataValueField = "SurveyOptionId"
chkOptions.DataBind()
chkOptions.Visible = True
End Select
End If
End Sub
Private Sub cmdSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSubmit.Click
Dim objRadioButtonList As RadioButtonList
Dim objCheckBoxList As CheckBoxList
Dim objSurvey As SurveyInfo
Dim intSurvey As Integer
Dim objSurveyOption As New SurveyOptionInfo
Dim intSurveyOption As Integer
Dim intQuestion As Integer
Dim intOption As Integer
Dim blnValid As Boolean = True
Dim blntmpValid As Boolean = False
intQuestion = -1
Dim arrSurveys As List(Of SurveyInfo) = SurveyController.GetSurveys(ModuleId)
For intSurvey = 0 To arrSurveys.Count - 1
objSurvey = arrSurveys(intSurvey)
intQuestion += 1
Select Case objSurvey.OptionType
Case "R"
objRadioButtonList = Me.FindControl("lstSurvey").Controls(intQuestion).FindControl("optOptions")
If objRadioButtonList.SelectedIndex = -1 Then
blnValid = False
End If
Case "C"
objCheckBoxList = Me.FindControl("lstSurvey").Controls(intQuestion).FindControl("chkOptions")
blntmpValid = False
intOption = -1
Dim arrSurveyOptions As List(Of SurveyOptionInfo) = SurveyOptionController.GetSurveyOptions(objSurvey.SurveyId)
For intSurveyOption = 0 To arrSurveyOptions.Count - 1
intOption += 1
If objCheckBoxList.Items(intOption).Selected = True Then
blntmpValid = True
End If
Next
If blntmpValid = False Then
blnValid = False
End If
End Select
Next
If blnValid Then
intQuestion = -1
For intSurvey = 0 To arrSurveys.Count - 1
objSurvey = CType(arrSurveys(intSurvey), SurveyInfo)
intQuestion += 1
Select Case objSurvey.OptionType
Case "R"
If Not IsNothing(Me.FindControl("lstSurvey").Controls(intQuestion).FindControl("optOptions")) Then
objRadioButtonList = Me.FindControl("lstSurvey").Controls(intQuestion).FindControl("optOptions")
objSurveyOption.SurveyOptionId = Convert.ToInt32(objRadioButtonList.SelectedValue)
SurveyOptionController.AddSurveyResult(objSurveyOption, UserId)
End If
Case "C"
intOption = -1
objCheckBoxList = Me.FindControl("lstSurvey").Controls(intQuestion).FindControl("chkOptions")
Dim arrSurveyOptions As List(Of SurveyOptionInfo) = SurveyOptionController.GetSurveyOptions(objSurvey.SurveyId)
For intSurveyOption = 0 To arrSurveyOptions.Count - 1
objSurveyOption = CType(arrSurveyOptions(intSurveyOption), SurveyOptionInfo)
intOption += 1
If objCheckBoxList.Items(intOption).Selected = True Then
SurveyOptionController.AddSurveyResult(objSurveyOption, UserId)
End If
Next
End Select
Next
Message_Label.Text = Localization.GetString("SurveyComplete", Me.LocalResourceFile)
If blnPersonalVoteTracking = True Then
' This means the module vote tracking is using personalization, so set the profile to show they have voted
DotNetNuke.Services.Personalization.Personalization.SetProfile(ModuleId.ToString, "Voted", True)
blnVoted = True
DisplayResults()
Else
' Store a cookie to show the chart after the submit
Dim objCookie As HttpCookie = New HttpCookie("_Module" & ModuleId.ToString & "_Survey")
objCookie.Value = "True"
objCookie.Expires = DateTime.MaxValue ' never expires
Response.AppendCookie(objCookie)
blnVoted = True
DisplayResults()
End If
Else
Message_Label.Text = Localization.GetString("SurveyIncomplete", Me.LocalResourceFile)
End If
End Sub
Private Sub cmdResults_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdResults.Click
DisplayResults()
End Sub
Private Sub lstResults_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles lstResults.ItemDataBound
Dim objSurvey As SurveyInfo
Dim objSurveyOption As SurveyOptionInfo
Dim intSurveyOption As Integer
Dim strHTML As String
Dim intGraphWidth As Integer = 400
If CType(Settings("surveygraphwidth"), String) <> "" Then
intGraphWidth = Int32.Parse(CType(Settings("surveygraphwidth"), String))
End If
strHTML = "<BR><TABLE BORDER=""0"" CELLPADDING=""2"" CELLSPACING=""0"" WIDTH=""100%"">"
objSurvey = SurveyController.GetSurvey(Int32.Parse(lstResults.DataKeys(e.Item.ItemIndex).ToString), ModuleId)
If Not objSurvey Is Nothing Then
Dim arrSurveyOptions As List(Of SurveyOptionInfo) = SurveyOptionController.GetSurveyOptions(objSurvey.SurveyId)
For intSurveyOption = 0 To arrSurveyOptions.Count - 1
objSurveyOption = arrSurveyOptions(intSurveyOption)
Dim dblPercent As Double = 0
If objSurvey.Votes <> 0 Then
dblPercent = Convert.ToDouble(objSurveyOption.Votes / objSurvey.Votes)
End If
strHTML += "<TR>"
strHTML += "<TD VALIGN=""top"" CLASS=""YourCompanyNameSurveyResults"">" & FormatSurveyOption(objSurveyOption.OptionName, objSurveyOption.IsCorrect) & " (" & objSurveyOption.Votes.ToString & ")</TD>"
strHTML += "<TD ALIGN=""left"" VALIGN=""top"" CLASS=""Normal"" NOWRAP><IMG SRC=""" & Me.TemplateSourceDirectory & "/red.gif"" WIDTH=""" & (intGraphWidth * dblPercent) & """ BORDER=""0"" HEIGHT=""15""> " & CInt(dblPercent * 100).ToString & "%</TD>"
strHTML += "</TR>"
Next
End If
strHTML += "</TABLE>"
Dim lblResults As Label = CType(e.Item.FindControl("lblResults"), Label)
lblResults.Text = strHTML
End Sub
Private Sub cmdSurvey_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSurvey.Click
DisplaySurvey()
End Sub
#End Region