城市而不是id似乎在下降列表值上

本文关键字:列表 id 城市 | 更新日期: 2023-09-27 18:13:18

我在加载dropdownlist时遇到了一个问题,dropdownlistvalue上似乎显示的是city而不是id。问题出在哪里?

#region CITIES
public List<ListItem> loadCities()
{
    using (SqlConnection conn = new SqlConnection(DataBase.Conn))
    {
        conn.Open();
        string query = "SELECT * FROM Cities";
        using (SqlCommand cmd = new SqlCommand(query, conn))
        {
            SqlDataReader dr = cmd.ExecuteReader();
            List<ListItem> li = new List<ListItem>();
            try
            {
                while (dr.Read())
                {
                    li.Add(new ListItem(dr["Cities"].ToString(), dr["Id"].ToString()));
                }
            }
            catch (Exception)
            {
                throw;
            }
            return li;
        }
    }
}
#endregion

城市而不是id似乎在下降列表值上

如果您的表看起来像这个

ID | Cities
 1 | New York
 2 | Paris

然后,您的列表应该显示"New York"answers"Paris",使用SelectedValue属性,您应该得到1或2。

你的桌子看起来像我的例子吗?

您正在使用SelectedValue吗?

由于调试数据读取器并不总是那么容易,您可以将内容存储在一个变量中,然后进行检查:

while (dr.Read())
{
    String value = dr["Id"].ToString();
    String text =  dr["Cities"].ToString();
    li.Add(new ListItem(text, value));
}

然后在li.Add上设置一个断点,并检查valuetext变量是否包含您需要的内容。

    public List<City> GetCities()
    {
        try
        {
            List<City> cityList = new List<City>();
            using (sqlCon = new SqlConnection(Database.GetConnectionString()))
            {
                sqlCmd = new SqlCommand("sp_Cities", sqlCon);
                sqlCmd.Parameters.AddWithValue("@Mode", 1);
                sqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
                if (sqlCon.State != System.Data.ConnectionState.Open)
                {
                    sqlCon.Open();
                }
                sqlReader = sqlCmd.ExecuteReader();
                using (sqlReader)
                {
                    if (sqlReader.HasRows)
                    {
                        City c = new City();
                        while (sqlReader.Read())
                        {
                            c = new City ();
                            c.ID = Convert.ToInt32(sqlReader["ID"]);
                            c.Name = Convert.ToString(sqlReader["Name"]);
                            cityList.Add(c);
                        }
                    }
                }
            }

            return cityList;
        }
        catch (Exception)
        {
            throw;
        }
    }

您可以创建一个具有两个属性(如ID和CityName(的类,并创建该类的对象和该类型的列表,然后迭代sqlReader并将对象添加到列表中,然后您可以像下面的一样分配给下拉列表

    private void LoadCities()
    {
        try
        {
            List<City> cityList = new cityBLL().GetAllcity();                
            ddlGender.DataSource = cityList;
            ddlGender.DataTextField = "Name";
            ddlGender.DataValueField = "ID";
            ddlGender.DataBind();
        }
        catch (Exception)
        {
            throw;
        }
    }