城市而不是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 | 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
上设置一个断点,并检查value
和text
变量是否包含您需要的内容。
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;
}
}