我似乎无法让我的应用程序存储列表框中的选定项目。
每次运行代码并进行调试时,即使未选择列表框中的选定项目,也会从列表框中选择列表框中的第一项,并存储此项目,但对于已选择的实际项目,将忽略这些项目。如果我在ASP标记中将listitems的所有属性设置为Selected =“false”,则会发生这种情况。
我有一个用于复选框列表的相同代码,它工作正常我看不出为什么这不起作用?
我没有包含Answers类,因为它只是获取并设置属性。
<asp:ListBox runat="server" ID="lbQuestion3" SelectionMode="Multiple" Rows="7">
<asp:ListItem Value="0" >Dublin</asp:ListItem>
<asp:ListItem Value="1" >Cork</asp:ListItem>
<asp:ListItem Value="1" >Waterford</asp:ListItem>
<asp:ListItem Value="1" >Limerick</asp:ListItem>
<asp:ListItem Value="0" >Carlow</asp:ListItem>
<asp:ListItem Value="0" >Galway</asp:ListItem>
<asp:ListItem Value="0" >Kilkenny</asp:ListItem>
</asp:ListBox>
<br />
<asp:Button ID="btnQuestion4" runat="server" Text="Next Question" OnClick="btnQuestion4_Click"/>
C#代码
protected void btnQuestion4_Click(object sender, EventArgs e)
{
Answers question3;
List<Answers> answers = new List<Answers>();
foreach (ListItem item in lbQuestion3.Items)
{
if (item.Selected == true)
{
question3 = new Answers(item.Text, Convert.ToInt32(item.Value), 0);
answers.Add(question3);
}
Session["ssAnswerQ3"] = answers;
Response.Redirect("Question4.aspx");
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Session["ssAnswerQ3"] != null)
{
List<Answers> previousAnswers = new List<Answers>();
previousAnswers = (List<Answers>)Session["ssAnswerQ3"];
foreach (ListItem item in lbQuestion3.Items)
{
foreach (var item2 in previousAnswers)
{
if (item2.Answer == item.Text)
{
item.Selected = true;
}
}
}
}
}
}
非常感谢任何帮助。
约翰