为什么我的下拉列表选择相同的值?

时间:2019-02-19 20:47:56

标签: c# asp.net

我有一组asp.net下拉列表,使用户可以选择为生产人员选择名称。名称用于显示与生产表中的行关联的生产人员。这些列表都具有相同的名称集(从中选择名称,并将条目存储到SQL Server数据库中)。为此,我使用SQL调用将名称添加到了第一个列表中,并使用如下所示的AddRange方法将名称添加到了其他列表中(全部在后面的C#代码中):

PopulateList(ddlTM1); // calls the method in which a SQL call is used to populate the list
ddlTM2.Items.AddRange(ddlTM1.Items.OfType<ListItem>().ToArray());
ddlTM3.Items.AddRange(ddlTM1.Items.OfType<ListItem>().ToArray());

这按预期工作。但是,我要使列表选择以前提交中已经选择的任何名称。这是它的设置:

String strCommand = "SELECT * FROM tblCrew, tblPerson WHERE tblCrew.PersonID = tblPerson.Id " +
                    "AND tblCrew.ProductionID = " + Session["ProductionID"].ToString();
SqlConnection connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["Connection"].ConnectionString);
SqlCommand sqlCommand = new SqlCommand(strCommand, connection);
SqlDataReader reader;
try
{
    reader.Read();
    ddlCrew1.SelectedIndex = ddlCrew1.Items.IndexOf(ddl.Items.FindByValue(reader["Id"].ToString()));
    reader.Close();
}
catch (Exception err){}
connection.Close();

问题是,这将为每个下拉列表选择给定值。即使为后续列表设置选定的索引,也会将所有列表更改为相同的选定值(基本上,最后一个选定的名称将显示在所有列表中;从正面看,该名称始终是正确的)。我对为什么会发生这种情况以及如何应对这种情况感到困惑。用户仍然可以相互独立地选择列表,并且所有名称均已正确保存。但是,我想显示现有条目已经存在的名称。

0 个答案:

没有答案