/// <summary>
        /// Parse an AnswerDataCollection, converts the data and
        /// returns an AnswerItemCollection filled with the correct
        /// child controls
        /// </summary>
        /// <param name="answers">A collection of answerdata entities</param>
        /// <param name="defaultSelectionMode">The default selection mode for the
        /// item (Radio, checkbox etc...)</param>
        /// <param name="parentcontrolUniqueID">
        /// Unique ID required to identify global groups
        /// like radiobutton groups
        /// </param>
        /// <param name="showAnswerText">
        /// Assigns the text to the answeritem control ?
        /// </param>
        /// <param name="voterAnswersState">
        /// Current state of answers, used for piping. If not available
        /// leave it to null
        /// </param>
        /// <param name="enableDefaults">
        /// Does the answer set the user default values of fields to the answer web controls
        /// </param>
        /// <returns>A collection of answeritem web controls</returns>
        public static AnswerItemCollection CreateAnswerItemCollection(AnswerData answers, QuestionItem question, Section section, AnswerSelectionMode defaultSelectionMode, Style answerStyle, ControlRenderMode renderMode, string languageCode, string parentControlUniqueID, bool showAnswerText, VoterAnswersData.VotersAnswersDataTable voterAnswersState, bool enableDefaults)
        {
            AnswerItemCollection items = new AnswerItemCollection();

            foreach (AnswerData.AnswersRow row in answers.Answers.Rows)
            {
                items.Add(Create(row, question, section, defaultSelectionMode, answerStyle, renderMode, languageCode, parentControlUniqueID, showAnswerText, voterAnswersState, enableDefaults));
            }
            return(items);
        }
 /// <summary>
 /// Retrieves the given answer item from the control collection
 /// </summary>
 private static AnswerItem GetAnswerItem(AnswerItemCollection answers, int answerId)
 {
     foreach (AnswerItem item in answers)
     {
         if (item.AnswerId == answerId)
         {
             return(item);
         }
     }
     return(null);
 }
 /// <summary>
 /// Subsribe the answer items which require it to the correct
 /// answer publisher controls
 /// </summary>
 public static void BindSubscribersToPublishers(AnswerItemCollection answers)
 {
     foreach (AnswerItem item in answers)
     {
         IAnswerSubscriber subscriber = item as IAnswerSubscriber;
         if (subscriber != null)
         {
             foreach (AnswerData.AnswersRow row in new Answers().GetSubscriptionList(item.AnswerId).Answers.Rows)
             {
                 AnswerItem answerItem = GetAnswerItem(answers, row.AnswerId);
                 if (answerItem != null)
                 {
                     answerItem.AnswerPublished        += new AnswerPublisherEventHandler(subscriber.ProcessPublishedAnswers);
                     answerItem.AnswerPublisherCreated += new AnswerPublisherEventHandler(subscriber.PublisherCreation);
                 }
             }
             continue;
         }
     }
 }
 /// <summary>
 /// Subscribe the answer items which require it to the correct
 /// answer publisher controls defined as defined by the Subscriber collection
 /// </summary>
 public static void ActivateAnswerConnections(AnswerConnectionsCollection answerConnections, AnswerItemCollection answers)
 {
     foreach (AnswerConnection connection in answerConnections)
     {
         IAnswerSubscriber answerItem = GetAnswerItem(answers, connection.SubscriberId) as IAnswerSubscriber;
         if (answerItem != null)
         {
             AnswerItem item2 = GetAnswerItem(answers, connection.PublisherId);
             if ((item2 != null) && (item2 is IAnswerPublisher))
             {
                 item2.AnswerPublished        += new AnswerPublisherEventHandler(answerItem.ProcessPublishedAnswers);
                 item2.AnswerPublisherCreated += new AnswerPublisherEventHandler(answerItem.PublisherCreation);
             }
         }
     }
 }