0
我正在動態創建嚮導。該向導是一個測驗。該向導是一個用戶控件(.ascx)。在控件的OnInit上,我創建步驟並動態添加它們。在每一步我都有一個包含單選按鈕列表的用戶控件(也是.ascx)。該用戶控件是基於數據庫設置創建的。這一切工作正常。但是,我希望用戶能夠返回並編輯他們的測驗,並且我似乎無法加載保存的答案。我計劃做的是創建一個BindAnswer方法,它從數據庫中檢索答案,並將usercontrol中的單選按鈕列表選擇項設置爲反映答案。這個BindAnswer方法從數據庫獲取數據,並且在它後面的代碼中正確設置用戶控件。但是,它並沒有渲染到屏幕上......我假設,因爲我沒有在生命週期的正確步驟中這樣做。動態嚮導步驟上的用戶控件
嘗試1:
public override void BindAnswer()
{
IEnumerable<QuestionChoice> questionChoices;
using (var questionChoiceService = new QuestionChoiceService())
{
questionChoices = questionChoiceService.GetQuestionChoicesByTestAndQuestion(Convert.ToInt32(Session["TestID"]), Question.ID);
}
if (questionChoices.Any())
{
foreach (var questionChoice in questionChoices)
{
if (RadioButtonList.Items.FindByValue(questionChoice.QuestionValueID.ToString()) != null)
{
RadioButtonList.Items.FindByValue(questionChoice.QuestionValueID.ToString()).Selected = true;
}
}
}
}
而且我把這個像這樣:
QuizQuestionControlBase questionControl = null;
questionControl = (QuizQuestionControlBase)Page.LoadControl("~/UserControls/QuizQuestionRadioButton.ascx");
questionControl.BindData(pageId, question.ID);
questionControl.BindAnswer();
var step = new WizardStep();
var userControl = (Control)questionControl;
step.Controls.Add(userControl);
step.Title = String.Format("Step {0}", QuizWizard.WizardSteps.Count + 1);
QuizWizard.WizardSteps.Add(step);
而在這一點上,我可以逐步執行代碼,並看到正確的單選按鈕被選中。
嘗試2,而不是單獨的BindAnswer方法,我只是在RadioButtonList.OnDataBound事件上設置單選按鈕狀態,但結果相同。它似乎在代碼中檢查,但不呈現在屏幕上。