Asp.net 为什么listbox总是选择第一项为true

Asp.net 为什么listbox总是选择第一项为true,asp.net,c#-4.0,Asp.net,C# 4.0,在我的应用程序中,我的第一个列表框填充在下拉列表的选定索引上,然后根据我的第一个列表框中的多个选定项填充第二个列表框 问题是第二个列表框总是在第一个列表框中包含第一项,即使它未被选中 要填充第一个列表框,我的代码是 protected void ddlSkillType_SelectedIndexChanged(object sender, EventArgs e) { List<TblSkillType> lstSkillType = ServiceAcc

在我的应用程序中,我的第一个列表框填充在下拉列表的选定索引上,然后根据我的第一个列表框中的多个选定项填充第二个列表框

问题是第二个列表框总是在第一个列表框中包含第一项,即使它未被选中

要填充第一个列表框,我的代码是

 protected void ddlSkillType_SelectedIndexChanged(object sender, EventArgs e)
    {
        List<TblSkillType> lstSkillType = ServiceAccess.GetProxy().GetSkillType();
        List<TblSkill> lstSkill = ServiceAccess.GetProxy().GetAllSkill();
        List<TblSkillDetail> lstSkillDetails = ServiceAccess.GetProxy().GetAllSkillDtls();
        var skill = (from a in lstSkillType
                     from b in lstSkill
                     from c in lstSkillDetails
                     where a.SkillTypeId == Convert.ToInt32(ddlSkillType.SelectedValue) && a.SkillTypeId == b.SkillTypeId && b.SkillId == c.SkillId
                     select new { b.SkillId, c.SkillName }).ToList();
        lstboxSkill.DataSource = skill;
        lstboxSkill.DataTextField = "SkillName";
        lstboxSkill.DataValueField = "SkillId";
        lstboxSkill.DataBind();
    }
protected void imgbtnMoveRightListBox_Click(object sender, ImageClickEventArgs e)
    {
        for (int i = 0; i < lstboxSkill.Items.Count; i++)
        {
            if (lstboxSkill.Items[i].Selected)
            {
                lstBBoxSkill2.Items.Add(lstboxSkill.Items[i]);
            }

        }
protectedvoid ddlSkillType\u SelectedIndexChanged(对象发送方,事件参数e)
{
List lstSkillType=ServiceAccess.GetProxy().GetSkillType();
List lstSkill=ServiceAccess.GetProxy().GetAllSkill();
List lstSkillDetails=ServiceAccess.GetProxy().GetAllSkillDtls();
var skill=(来自lstSkillType中的
来自伊斯特基尔的b
来自lstSkillDetails中的c
其中a.SkillTypeId==转换为32(ddlSkillType.SelectedValue)&&a.SkillTypeId==b.SkillTypeId&&b.SkillId==c.SkillId
选择新的{b.SkillId,c.SkillName}).ToList();
lstboxSkill.DataSource=技能;
lstboxSkill.DataTextField=“SkillName”;
lstboxSkill.DataValueField=“SkillId”;
lstboxSkill.DataBind();
}
对于填充第二个列表框,我的代码是

 protected void ddlSkillType_SelectedIndexChanged(object sender, EventArgs e)
    {
        List<TblSkillType> lstSkillType = ServiceAccess.GetProxy().GetSkillType();
        List<TblSkill> lstSkill = ServiceAccess.GetProxy().GetAllSkill();
        List<TblSkillDetail> lstSkillDetails = ServiceAccess.GetProxy().GetAllSkillDtls();
        var skill = (from a in lstSkillType
                     from b in lstSkill
                     from c in lstSkillDetails
                     where a.SkillTypeId == Convert.ToInt32(ddlSkillType.SelectedValue) && a.SkillTypeId == b.SkillTypeId && b.SkillId == c.SkillId
                     select new { b.SkillId, c.SkillName }).ToList();
        lstboxSkill.DataSource = skill;
        lstboxSkill.DataTextField = "SkillName";
        lstboxSkill.DataValueField = "SkillId";
        lstboxSkill.DataBind();
    }
protected void imgbtnMoveRightListBox_Click(object sender, ImageClickEventArgs e)
    {
        for (int i = 0; i < lstboxSkill.Items.Count; i++)
        {
            if (lstboxSkill.Items[i].Selected)
            {
                lstBBoxSkill2.Items.Add(lstboxSkill.Items[i]);
            }

        }
protectedvoid imgbtnMoveRightListBox\u单击(对象发送者,图像单击事件参数e)
{
对于(int i=0;i
}

我用断点检查它,发现第二个列表框总是取第一个列表框的fistitem,即使它没有被选中。 也就是说,forloop在第一次迭代中始终为true,在它之后为false,即使lstboxSkill中的第一项不是select 在第一个列表框中多次选择后,第二个列表框填充第一个列表框的多个字段 我不知道是什么问题。 请帮我修一下


提前感谢

填写完
列表框后
只需写这一行

lstBBoxSkill2.SelectedIndex = -1;


如果它对你有效,别忘了更新投票并将其标记为已接受。。。