2011-11-01 54 views
-3

我有一个问题,当加载dropdownlist,城市而不是id似乎在dropdownlist值。问题是什么?城市而不是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 
+1

'dr [“Cities”]'行看起来很可疑。列名真的是“城市”吗? –

+1

使用称为“调试”的忍者技术! –

+0

你的桌子是什么样的? –

回答

0

如果您的表看起来像这样

ID | Cities 
1 | New York 
2 | Paris 

那么你的列表应显示“纽约”和“巴黎”,并使用SelectedValue属性,你应该得到1或2

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

你使用的是SelectedValue

+0

是的,我不使用selectedvalue。 –

+0

@GoranZooferic:如果你不使用SelectedValue,那可能是问题所在。你在用什么? –

0

因为它并不总是易于调试的DataReader你可以存储在一个变量的内容,您再检查:

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

然后穿上li.Add一个断点,并检查valuetext变量包含您所需要的。

+0

我刚刚debug.Variables的值出现此值=“1”文本=“第比利斯”。 –

+0

我刚刚创建了一个关于该问题的示例。你可以检查PLZ吗? hotfile.com/dl/133925859/7a97eba/ListIssue.rar.html –

+0

我没有下载代码来帮助。你应该在问题中显示相关的代码。看看你提供的'SelectedValue'提示来检索一个项目的'Value'。如果填写名单的工作,那么这是事情发生错误的地方。看这里。 – CodeCaster

0
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; 
     } 
    } 
相关问题