/// <summary> /// Store the answers received in a /// temporary storage /// </summary> /// <param name="sender">The question that raised the event</param> /// <param name="e">Answers posted with the question</param> protected virtual void OnAnswerPost(Object sender, QuestionItemAnswersEventArgs e) { int voterId = _voterAnswers.Voters[0].VoterId; foreach (PostedAnswerData postedAnswer in e.Answers) { VoterAnswersData.VotersAnswersRow voterAnswer = updatedAnswerSet.VotersAnswers.NewVotersAnswersRow(); voterAnswer.VoterId = voterId; voterAnswer.AnswerId = postedAnswer.AnswerId; voterAnswer.QuestionId = postedAnswer.Item.QuestionId; voterAnswer.AnswerText = postedAnswer.FieldText; voterAnswer.SectionNumber = postedAnswer.SectionNumber; updatedAnswerSet.EnforceConstraints = false; updatedAnswerSet.VotersAnswers.AddVotersAnswersRow(voterAnswer); } }
/// <summary> /// A new section has been requested for edit /// Show a "new section" area with the section's answers /// </summary> protected virtual void AnswersGrid_EditSection(object sender, SectionAnswersItemEventArgs e) { _sectionTable.Controls.Clear(); if (e.SectionAnswers != null) { PostedAnswerDataCollection postedAnswers = new PostedAnswerDataCollection(); foreach (GridAnswerData answer in e.SectionAnswers) { if (VoterAnswersState == null) { VoterAnswersData voterAnswersData = new VoterAnswersData(); voterAnswersData.EnforceConstraints = false; VoterAnswersState = voterAnswersData.VotersAnswers; } VoterAnswersData.VotersAnswersRow voterAnswer = VoterAnswersState.NewVotersAnswersRow(); voterAnswer.AnswerId = answer.AnswerId; voterAnswer.QuestionId = QuestionId; voterAnswer.SectionNumber = -1; voterAnswer.AnswerText = answer.FieldText; voterAnswer.VoterId = -1; VoterAnswersState.AddVotersAnswersRow(voterAnswer); } } // Dont use any default answers as we have // setup an existing answer set EnableAnswersDefault = false; AddSection(-1, 0); SectionCount = 0; TargetSection = int.Parse(e.SectionNumber.ToString()); AddSubmitSectionButtons(true); GridMode = SectionGridMode.Edit; }
/// <summary> /// Generates the answers list for the question /// </summary> /// <param name="questionId"></param> /// <param name="onlyAnswered">show only answers that have been answered</param> string GenerateAnswersReport(int questionId, bool onlyAnswered, int sectionNumber) { StringBuilder answersReport = new StringBuilder(); AnswerData questionAnswers = new Answers().GetAnswers(questionId, null); int longestTextLength = GetLongestAnswerLength(questionAnswers); foreach (AnswerData.AnswersRow answer in questionAnswers.Answers.Rows) { AnswerTypeMode typeMode = (AnswerTypeMode)answer.TypeMode; VoterAnswersData.VotersAnswersRow voterAnswer = _voterAnswers.VotersAnswers.FindByVoterIdAnswerIdSectionNumber(_voterAnswers.Voters[0].VoterId, answer.AnswerId, sectionNumber); string answerText = new PipeManager().PipeValuesInText(questionId, answer.AnswerText, _voterAnswers.VotersAnswers, null); if (voterAnswer != null) { // Check answer type if ((((typeMode & AnswerTypeMode.Field) > 0) || ((typeMode & AnswerTypeMode.Custom) > 0) || ((typeMode & AnswerTypeMode.DataSource) > 0)) && ((typeMode & AnswerTypeMode.Selection) == 0)) { if (voterAnswer.AnswerText.Length > 0) { answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " " + voterAnswer.AnswerText + Environment.NewLine + "<br />"); } else if (!onlyAnswered) { answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " " + ResourceManager.GetString("AnswerNotAnsweredMessage") + Environment.NewLine + "<br />"); } } else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0 && ((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Selection) > 0) { answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " [x] " + voterAnswer.AnswerText + Environment.NewLine + "<br />"); _questionScore += answer.ScorePoint; } else if (((AnswerTypeMode)typeMode & AnswerTypeMode.Upload) > 0) { answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " " + GenerateFileList(voterAnswer.AnswerText) + Environment.NewLine + "<br />"); } else { answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " [x]" + Environment.NewLine + "<br />"); _questionScore += answer.ScorePoint; } } else if (!onlyAnswered) { // Check answer type if ((((typeMode & AnswerTypeMode.Field) > 0) || ((typeMode & AnswerTypeMode.Custom) > 0) || ((typeMode & AnswerTypeMode.DataSource) > 0)) && ((typeMode & AnswerTypeMode.Selection) == 0)) { answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " " + ResourceManager.GetString("AnswerNotAnsweredMessage") + Environment.NewLine + "<br />"); } else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0 && ((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Selection) > 0) { answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " [] " + ResourceManager.GetString("AnswerNotAnsweredMessage") + Environment.NewLine + "<br />"); } else { answersReport.Append(" " + answerText + GenerateMissingSpaces(answerText.Length, longestTextLength) + " []" + Environment.NewLine + "<br />"); } } } return(answersReport.ToString()); }
private void BindMatrix(DataView childQuestions, PlaceHolder container, int sectionNumber) { Table selectionTable = new Table(); TableRow selectionRow = new TableRow(), matrixHeaderRow = new TableRow(); TableCell selectionCell; // Selection cell for the answer item bool generateHeader = true; // Header generation in progress System.Web.UI.WebControls.Image spotImage = new System.Web.UI.WebControls.Image(); selectionTable.CssClass = (sectionNumber % 2) == 0 ? "innerText" : "alternatingSection"; // Creates header's first empty cell TableCell answerHeaderCell = new TableCell(); matrixHeaderRow.Cells.Add(answerHeaderCell); // Get all answer items available for this // question foreach (DataRowView questionRow in childQuestions) { selectionRow = new TableRow(); TableCell questionCell = new TableCell(); questionCell.VerticalAlign = VerticalAlign.Top; questionCell.Text = new PipeManager().PipeValuesInText( int.Parse(questionRow["QuestionId"].ToString()), questionRow["QuestionText"].ToString(), _voterAnswers.VotersAnswers, null); selectionRow.Cells.Add(questionCell); // Parse the child question's answers AnswerData questionAnswers = new Answers().GetAnswers(int.Parse(questionRow["QuestionId"].ToString()), null); foreach (AnswerData.AnswersRow answer in questionAnswers.Answers) { // New spot image spotImage = new System.Web.UI.WebControls.Image(); // Creates a new answer text in the matrix header if (generateHeader) { answerHeaderCell = new TableCell(); answerHeaderCell.VerticalAlign = VerticalAlign.Top; answerHeaderCell.HorizontalAlign = HorizontalAlign.Center; answerHeaderCell.Wrap = false; answerHeaderCell.Text = new PipeManager().PipeValuesInText(answer.QuestionId, answer.AnswerText, _voterAnswers.VotersAnswers, null); matrixHeaderRow.Cells.Add(answerHeaderCell); } // Add a new selection to the matrix's child question selectionCell = new TableCell(); selectionCell.VerticalAlign = VerticalAlign.Top; selectionCell.HorizontalAlign = HorizontalAlign.Center; selectionCell.Wrap = false; // Check if the voter has answered this answer VoterAnswersData.VotersAnswersRow voterAnswer = _voterAnswers.VotersAnswers.FindByVoterIdAnswerIdSectionNumber(_voterId, answer.AnswerId, sectionNumber); if (voterAnswer != null) { // Check answer type if ((((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0) || (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Custom) > 0) || (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.DataSource) > 0)) { selectionCell.Text = FormatVoterAnswer(null, voterAnswer.AnswerText, true); } else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Upload) > 0) { selectionCell.Controls.Add(GenerateFileList(voterAnswer.AnswerText)); } else { spotImage.ImageUrl = "images/spot_on.gif"; selectionCell.Controls.Add(spotImage); } } else { // Check answer type if ((((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0) || (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Custom) > 0) || (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.DataSource) > 0)) { selectionCell.Text = FormatVoterAnswer(null, null, false); } else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Upload) > 0) { selectionCell.Text = GetPageResource("NoFileUploadedMessage"); } else { spotImage.ImageUrl = "images/spot_off.gif"; selectionCell.Controls.Add(spotImage); } } selectionRow.Cells.Add(selectionCell); } // Generates the answer text header if (generateHeader) { selectionTable.Rows.Add(matrixHeaderRow); generateHeader = false; } selectionTable.Rows.Add(selectionRow); } selectionTable.Width = Unit.Percentage(100); container.Controls.Add(selectionTable); }
private void BindAnswerTable(AnswerData questionAnswers, PlaceHolder container, int sectionNumber) { Table selectionTable = new Table(); TableRow selectionRow; TableCell answerTypeCell, answerTextCell; selectionTable.CssClass = (sectionNumber % 2) == 0 ? "innerText" : "alternatingSection"; // Get all answer items available for this // question foreach (AnswerData.AnswersRow answer in questionAnswers.Answers) { selectionRow = new TableRow(); answerTypeCell = new TableCell(); answerTypeCell.Width = Unit.Pixel(10); answerTypeCell.VerticalAlign = VerticalAlign.Top; answerTextCell = new TableCell(); string answerText = Server.HtmlEncode( System.Text.RegularExpressions.Regex.Replace(new PipeManager().PipeValuesInText( answer.QuestionId, answer.AnswerText, _voterAnswers.VotersAnswers, null), "<[^>]*>", " ")); System.Web.UI.WebControls.Image spotImage = new System.Web.UI.WebControls.Image(); spotImage.ImageUrl = "images/spot_on.gif"; // Check if the voter has answered this answer VoterAnswersData.VotersAnswersRow voterAnswer = _voterAnswers.VotersAnswers.FindByVoterIdAnswerIdSectionNumber(_voterId, answer.AnswerId, sectionNumber); if (voterAnswer != null) { // Check answer type if (((((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0) || (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Custom) > 0) || (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.DataSource) > 0)) && (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Selection) == 0)) { spotImage.ImageUrl = "images/spot_text.gif"; answerTextCell.Text = FormatVoterAnswer(answerText, voterAnswer.AnswerText, true); } else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0 && ((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Selection) > 0) { answerTextCell.Text = FormatVoterAnswer(answerText, voterAnswer.AnswerText, true); _questionScore += answer.ScorePoint; } else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Upload) > 0) { spotImage.ImageUrl = "images/spot_file.gif"; answerTextCell.Controls.Add(new LiteralControl(answerText + "<br />")); answerTextCell.Controls.Add(GenerateFileList(voterAnswer.AnswerText)); } else { answerTextCell.Text = string.Format("<b>{0}</b>", answerText); _questionScore += answer.ScorePoint; } } else { // Check answer type if (((((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Field) > 0) || (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Custom) > 0) || (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.DataSource) > 0)) && (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Selection) == 0)) { spotImage.ImageUrl = "images/spot_text.gif"; answerTextCell.Text = FormatVoterAnswer(answerText, null, false); } else if (((AnswerTypeMode)answer.TypeMode & AnswerTypeMode.Upload) > 0) { spotImage.ImageUrl = "images/spot_file.gif"; answerTextCell.Text = answerText + "<br />" + GetPageResource("NoFileUploadedMessage"); } else { answerTextCell.Text = answerText; spotImage.ImageUrl = "images/spot_off.gif"; } } answerTypeCell.Controls.Add(spotImage); selectionRow.Cells.Add(answerTypeCell); selectionRow.Cells.Add(answerTextCell); selectionTable.Rows.Add(selectionRow); } selectionTable.Width = Unit.Percentage(100); container.Controls.Add(selectionTable); }