ASPX koden -----------------------------------------------
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="ctlQuestion.ascx.vb" TargetSchema="
http://schemas.microsoft.com/intellisense/ie5" Inherits="SurveyFactory.ctlQuestion" %>
<%@ Register TagPrefix="cc1" Namespace="SurveyFactory" Assembly="SurveyFactory" %>
<!-- LIST -->
<TABLE cellPadding="2" width="100%">
<TR>
<TD>
<table class="VisualGroup" >
<tr>
<td>
<asp:Repeater id="repQuestionGroup" Runat="server">
<HeaderTemplate>
</HeaderTemplate>
<ItemTemplate>
<table width="99%" class="border" style="margin: 5px 5px 5px 5px;" >
<tr class="border">
<td width="70%">
<asp:ImageButton ID="imgBtnExpandCollapse" Runat="server" />
<asp:label id="lblGroupID" runat="server" visible="false" text="<%# Container.DataItem.GetQuestionGroup.GetID %>"/>
<asp:label id="lblGroupName" runat="server">...</asp:label>
</td>
<td width="10%">
<asp:Label ID="lblGrpOption" Runat="server"></asp:Label>
</td>
<td width="20%" align="right">
<asp:ImageButton ID="imgBtnNewQuestion" Runat="server" CausesValidation="false" AlternateText="New question" ImageUrl="images/icon_document.gif" />
<asp:ImageButton ID="imgBtnOrder" Runat="server" CausesValidation="false" AlternateText="Change order" ImageUrl="images/icon_updown.gif" />
<asp:ImageButton ID="imgBtnGroupEdit" Runat="server" CausesValidation="false" AlternateText="Edit group" ImageUrl="images/icon_edit.gif" />
<asp:ImageButton ID="imgBtnGroupRemove" Runat="server" CommandArgument="<%# Container.DataItem.GetQuestionGroup.GetID %>" onclick="btnDeleteQuestionGroup_Click" CausesValidation="false" AlternateText="Remove group" ImageUrl="images/icon_delete.gif" />
</td>
</tr>
<tr>
<td colspan="3">
<cc1:CustomDataGrid id="DataGridQuestions" EnableViewState="true" OnItemDataBound="DataGridQuestion_ItemDataBound" runat="server" Width="100%" AutoGenerateColumns="False" AllowSorting="True" AllowPaging="False" HeaderStyle-CssClass="tablerowHeader" AlternatingItemStyle-CssClass="tablerowAlternate" BorderWidth="0" BorderStyle="None" HeaderStyle-Height="20" SortColumn="0">
<HeaderStyle CssClass="tablerowHeader"></HeaderStyle>
<AlternatingItemStyle CssClass="tablerowAlternate"></AlternatingItemStyle>
<ItemStyle CssClass="tableRowItem"></ItemStyle>
<Columns>
<asp:TemplateColumn SortExpression="0" HeaderText="Question" HeaderStyle-Width="70%" ItemStyle-Width="70%">
<ItemTemplate>
<asp:Label id="lblID" text="<%# Container.DataItem.GetID %>" Runat="server" Visible="False" />
<asp:LinkButton runat="server" ID="LinkControl" Visible="False" commandname="open" />
<%# CommonFunctions.ParseTags(GetFolderID,Container.DataItem.QuestionText) %>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Properties">
<ItemTemplate >
<asp:label id="lblOptions" runat="server"></asp:label>
</ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="Action " ItemStyle-HorizontalAlign="Right" HeaderStyle-HorizontalAlign="Right">
<ItemTemplate>
<asp:ImageButton ID="imgBtnRemove" Runat="server" CommandArgument="<%# Container.DataItem.GetID %>" onclick="btnDeleteQuestion_Click" CausesValidation="false" AlternateText="Remove question" ImageUrl="images/icon_delete.gif" />
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</cc1:CustomDataGrid>
</td>
</tr>
</table>
<asp:PlaceHolder ID="phNewGroup" Runat="server" Visible="False">
</td></tr></table><table class="VisualGroupSpace"><tr><td></td></tr></table>
</asp:PlaceHolder>
<asp:table ID="tblPageBreak" Runat="server" CssClass="pagebreak">
<asp:TableRow>
<asp:TableCell HorizontalAlign="Center">pagebreak</asp:TableCell>
</asp:TableRow>
</asp:table>
<asp:PlaceHolder ID="phNewGroup2" Runat="server" Visible="False">
<table class="VisualGroup"><tr><td>
</asp:PlaceHolder>
</ItemTemplate>
</asp:Repeater>
</td></tr></table>
</TD>
</TR>
</TABLE>
//--------------------------------------------------------------------------------
Events:
Private Sub repQuestionGroup_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles repQuestionGroup.ItemDataBound
If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
Dim questionGrp As QuestionGroupAndQuestions = CType(e.Item.DataItem, QuestionGroupAndQuestions)
' ## Update labels ##
Dim lblGroupID As Label = CType(e.Item.FindControl("lblGroupID"), Label)
Dim lblGroupName As Label = CType(e.Item.FindControl("lblGroupName"), Label)
Dim lblGrpOption As Label = CType(e.Item.FindControl("lblGrpOption"), Label)
'
Dim dg As CustomDataGrid = CType(e.Item.FindControl("DataGridQuestions"), CustomDataGrid)
Dim imgBtnExpandCollapse As ImageButton = CType(e.Item.FindControl("imgBtnExpandCollapse"), ImageButton)
Dim tblPageBreak As Table = CType(e.Item.FindControl("tblPageBreak"), Table)
Dim phNewGroup As PlaceHolder = CType(e.Item.FindControl("phNewGroup"), PlaceHolder)
Dim phNewGroup2 As PlaceHolder = CType(e.Item.FindControl("phNewGroup2"), PlaceHolder)
'
ExpandCollapse(oSurvey.GetID.ToString, dg, imgBtnExpandCollapse, lblGroupName)
lblGroupID.Text = questionGrp.GetQuestionGroup.GetID.ToString
lblGroupName.Text = "<B>Group:</B> " + questionGrp.GetQuestionGroup.Name()
' Options text
lblGrpOption.Text = ""
lblGrpOption.ToolTip = ""
Dim condVec As ConditionVector = ConditionDataHandler.GetConditions(False, questionGrp.GetQuestionGroup.GetID)
setOptionText(lblGrpOption, "C", "Conditions", condVec.Count > 0)
setOptionText(lblGrpOption, "X", "Matrix group", (questionGrp.GetQuestionGroup.Type = 1))
setOptionText(lblGrpOption, "R", "Place next group at right", (questionGrp.GetQuestionGroup.NextGroupPlacement = QuestionGroup.NextGroupPlacementEnum.RIGHT))
setOptionText(lblGrpOption, "Q", "Fixed question width (" & questionGrp.GetQuestionGroup.QuestionWidth & " px)", (questionGrp.GetQuestionGroup.QuestionWidth > 0))
'
tblPageBreak.Visible = questionGrp.GetQuestionGroup.PageBreakAfter And Not (lastGroupID.Equals(questionGrp.GetQuestionGroup.GetID))
phNewGroup.Visible = questionGrp.GetQuestionGroup.StartNewVisualGroup Or questionGrp.GetQuestionGroup.PageBreakAfter
phNewGroup2.Visible = (questionGrp.GetQuestionGroup.StartNewVisualGroup Or questionGrp.GetQuestionGroup.PageBreakAfter) _
And Not (lastGroupID.Equals(questionGrp.GetQuestionGroup.GetID))
dg.DataSource = questionGrp.GetQuestions()
dg.DataBind()
End If
End Sub
Private Sub repQuestionGroup_ItemCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.RepeaterItemEventArgs) Handles repQuestionGroup.ItemCreated
If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
Dim questionGrp As QuestionGroupAndQuestions = CType(e.Item.DataItem, QuestionGroupAndQuestions)
' ## Buttons ##
' New question
' Dim objQuiz As Quiz = CurrentQuiz
'If (Not objQuiz Is Nothing) And
If (Not questionGrp Is Nothing) Then
' New
Dim imgBtnNewQuestion As ImageButton = CType(e.Item.FindControl("imgBtnNewQuestion"), ImageButton)
If (GetLanguageID() = GetAdminModule.GetDefaultLanguage(GetOwnerID)) Then
RegisterOpenDialog(imgBtnNewQuestion, Formatting.WIN_QUESTION_WIDTH, Formatting.WIN_QUESTION_HEIGHT, Question_Params(EditMode.NEW_QUESTION, GetFolderID, questionGrp.GetQuestionGroup.GetID, Nothing))
Else
imgBtnNewQuestion.Visible = False
End If
' Move
Dim imgBtnOrder As ImageButton = CType(e.Item.FindControl("imgBtnOrder"), ImageButton)
RegisterOpenDialog(imgBtnOrder, Formatting.WIN_MGR_WIDTH, Formatting.WIN_MGR_HEIGHT, "manageLists.aspx?Type=" & CType(MoveType.MoveQuestions, Integer) & "&GroupID=" + questionGrp.GetQuestionGroup.GetID.ToString)
' Edit group
Dim imgBtnGroupEdit As ImageButton = CType(e.Item.FindControl("imgBtnGroupEdit"), ImageButton)
RegisterOpenDialog(imgBtnGroupEdit, Formatting.WIN_QGRP_WIDTH, Formatting.WIN_QGRP_HEIGHT, QuestionGroup_Params(EditMode.EDIT_QUESTION, Nothing, questionGrp.GetQuestionGroup.GetID.ToString))
' Delete (confirm)
Dim imgBtnRemove As ImageButton = CType(e.Item.FindControl("imgBtnGroupRemove"), ImageButton)
RegisterScript_ConfirmFieldChange(imgBtnRemove, "Remove group?")
'
If (_role = User.USER_ROLE.READONLY_USER) Then
imgBtnNewQuestion.Visible = False
imgBtnRemove.Visible = False
End If
End If
End If
End Sub
Private Sub setOptionText(ByRef lbl As Label, ByVal strOption As String, ByVal strHint As String, ByVal isSet As Boolean)
If (isSet) Then
If lbl.Text <> "" Then
strHint = ", " + strHint
End If
lbl.Text += strOption
lbl.ToolTip += strHint
End If
End Sub
Protected Sub DataGridQuestion_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles DataGridQuestions.ItemDataBound
If (e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem) Then
Dim quest As Question = CType(e.Item.DataItem, Question)
Dim lblOptions As Label = CType(e.Item.FindControl("lblOptions"), Label)
' Show options
lblOptions.Text = ""
lblOptions.ToolTip = ""
setOptionText(lblOptions, "M", "Mandatory", quest.IsMandatory)
setOptionText(lblOptions, "T", "Text field", quest.AllowUserComments)
'AHP Nedenstående udkommenteret da den ikke længere er exclusive
'If (Not quest.IsMandatory) Then ' Exclusive...
Dim condVec As ConditionVector = ConditionDataHandler.GetConditions(True, quest.GetID)
setOptionText(lblOptions, "C", "Conditions", condVec.Count > 0)
'End If
'
Dim lb As LinkButton = CType(e.Item.FindControl("LinkControl"), LinkButton)
If lb.CommandName = "open" Then
Dim attr As String = GetOpenDialogAttr(Formatting.WIN_QUESTION_WIDTH, Formatting.WIN_QUESTION_HEIGHT, Question_Params(EditMode.EDIT_QUESTION, GetSurveyID, quest.QuestionGroupID, quest.GetID), "if (result=='reload') { __doPostBack('','');} ")
e.Item.Attributes.Add("onClick", attr)
End If
'
Dim imgBtnRemove As ImageButton = CType(e.Item.FindControl("imgBtnRemove"), ImageButton)
RegisterScript_ConfirmFieldChange(imgBtnRemove, "Remove question from this group?")
End If
End Sub