2011-11-01 55 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; 
     } 
    } 
相關問題