2014-02-12 26 views
0

我有一個有10列的國家的表格。我已將城市名作爲DataTextField指定給我的DropDownListId作爲DataValueField。現在在SelectedIndexChanged我必須從其他列如CityCode獲得值。我如何訪問它?如何在下拉列表中訪問DataSource表中的其他列?

ddlCity.DataSource = cboxTeam_DS.Tables["MyTable"]; 
ddlCity.DataTextField = "CityName"; 
ddlCity.DataValueField= "Id"; 
ddlCity.DataBind(); 

SelectedIndexChanged方法,我怎麼訪問CityCode列值?

+0

你想獲得所選城市的CityCode嗎? – Prashant16

+0

您可以通過傳遞選定的下拉列表中的「Id」來從數據庫中獲取「CityCode」。 – Prashant16

回答

1

那麼這裏是我爲解決這個問題而開發的解決方案,它對我來說非常有效。

我做的第一件事情,我已經改變了我的數據庫查詢

SELECT * FROM Cities ORDER BY CityName Asc; 

SELECT *, convert(nvarchar(10),id) + ',' + CityCode as idCode FROM Cities ORDER BY CityName Asc; 

它返回我含命名爲idCode一個額外的列的表。

由於id是int並且CityCode是nvarchar,因此我轉換id列並獲取包含兩列值的額外列。

而在我的代碼中,我已將idCode列分配給我的ddlCity.DataValueField

ddlCity.DataSource = cboxTeam_DS.Tables["MyTable"]; 
ddlCity.DataTextField = "CityName"; 
ddlCity.DataValueField = "idCode"; 
ddlCity.DataBind(); 

後,我使用逗號剪接向字符串分割成idcode成陣列。

string[] strArray = this.ddlCity.SelectedValue.Split(','); 

,然後用它,我想通過訪問索引使用它。

int myId = strArray[0]; 
string myCode = strArray[1]; 
1

您還沒有綁定CityCode列下拉菜單。 dropdown的數據保存在ViewState中,並且不知道其他列。在桌面上,我們可以從ComboBox(下拉菜單)獲取對象,但在asp.net中我們不能。這可能會使ViewState儘可能小。

您可以選擇其中一種方法來完成您所需要的操作。

  • 你可以得到id併發送一個數據庫調用中SelectedIndexChanged檢索CityCode

  • 您可以通過組合兩列(如id_CityCode)來製作Value列,稍後將提取您需要的內容。

+0

您可以通過組合兩列(如id_CityCode)來創建值列,並稍後解壓縮所需內容。 – Adil

0

您可以從數據源直接獲得

int CityId = (int)ddlCity.SelectedValue; 
    DataTable dt = cboxTeam_DS.Tables["MyTable"]; 
    string CityCode = (from DataRow dr in dt.Rows 
       where (int)dr["Id"] == CityId 
       select (string)dr["CityCode"]).FirstOrDefault(); 
1

我可以建議你這樣做

  1. 的兩種方式,您可以存儲一個較隱蔽的下拉與您的ID和CityCode人口在裏面。所以,無論何時您選擇原始下拉列表,請從此隱藏下拉列表中選擇適當的值。
  2. 第二種方法是,當您從ddlCity.SelectedValue中獲取ID時,您需要再次使用條件檢索表格,並在表格中以此值作爲參考以獲取城市代碼。

我寧願你去第一個。您還可以使用javascript訪問第一種情況下的隱藏下拉菜單。

相關問題