嗨:)我正在做一個簡單的表單。提示用戶填寫街道地址。每個用戶最多可以添加5個街道地址。因此,我有5個同樣的控件。我正在使用一個數據庫來提供所有國家和城市的名單。我正在收聽每個國家/地區列表上的OnSelectedItemChanged事件。觸發此事件時,我將連接到數據庫並將相應的城市列表綁定到適當的國家/地區ID。ASP.NET數據綁定無法正常工作OnSelectedItemChanged事件
所以,這是相當簡單的。我可以做5個不同的事件處理程序,但我只想創建一個事件處理程序併爲每個國家/地區列表項目收聽。
我的國家/地區名單分別稱爲lstContactCountry1,lstContactCountry2,...,最多5個,City列表分別稱爲lstContactCity1,lstContactCity2。
我正在使用DropDownLists。
所以,我的問題是,當我更改任何國家下拉列表中選擇的項目,除了數字1,城市列表根本沒有數據綁定。數據綁定僅在我更改了第一個國家/地區列表的選定項目後才起作用。此外,即使我一次又改變了第一個國家列表的選定項目,例如,將第二個國家列表的選定項目更改爲兩個城市列表綁定到同一個國家,即使它們不應該「T。
ASP.NET代碼隱藏:
protected void lstContactCountry1_SelectedIndexChanged(object sender, EventArgs e)
{
// lstContactCountry is the sender of the event
DropDownList lstContactCountry = sender as DropDownList;
// Get the number of DropDownList
char lstNumber = lstContactCountry.ID[lstContactCountry.ID.Length - 1];
lblTemp.Text = "Sender: " + lstContactCountry.ID;
// Get the IdCountry property from the selected value of the DropDownList
string idCountry = lstContactCountry1.SelectedValue;
// Some ADO.NET code :)
DataSet dataSet = new DataSet();
SqlConnection connection = new SqlConnection(connectionString);
SqlDataAdapter adapter = new SqlDataAdapter("SELECT IdCity, CityName FROM City WHERE IdCountry = '" + idCountry + "' ORDER BY CityName", connection);
adapter.Fill(dataSet, "City");
// lstContactCity is the City DropDownList below the selected Country DropDownList
DropDownList lstContactCity = this.Master.FindControl("phSecuredPageMainContent").FindControl("lstContactCity" + lstNumber.ToString()) as DropDownList;
lblTemp.Text += "<br />Receiver: ";
lstContactCity.DataSource = dataSet.Tables["City"];
lstContactCity.DataTextField = "CityName";
lstContactCity.DataValueField = "IdCity";
this.DataBind();
// Adding a default value to the list
lstContactCity.Items.Insert(0, new ListItem("City", "0"));
lstContactCity.SelectedIndex = 0;
}
編輯: 我發現了錯誤。它在這行代碼:
string idCountry = lstContactCountry1.SelectedValue;
我無意中在控件的名稱末尾添加了「1」。就這樣。 :)
[Sql注入](http://msdn.microsoft.com/en-us/library/ff648339.aspx)有人嗎? –