我有一個web表單,我用它作爲輸入表單。它有五個下拉列表。當頁面初始化時,每個下拉列表都有相同的一組值。默認選擇的值是「選擇」(選定的文本是「選擇」)。如果我加載沒有URL參數的頁面,它是一個空白的輸入表單。如果我使用URL參數「?ID = 00001」加載頁面,則會加載記錄00001中的數據。爲什麼所有下拉列表都更新爲相同的選定值?
這是問題所在。當我加載記錄中的數據(在本例中爲「00001」)時,所有下拉列表將使用相同的選定值進行更新。我已經嘗試了這種方法,不斷得到相同的結果,但無法弄清楚原因。我從來沒有像這樣的問題。
下面是我試過的代碼的最新版本。數據從中拉出的XML文件可能在「社交」節點中有一到五個「媒體」子節點。應使用第一個「媒體」子節點的「ID」屬性從第一個下拉列表(ddlSocial1)中選擇一個值。應使用第二個「媒體」子節點的「ID」屬性從第二個下拉列表(ddlSocial2)中選擇一個值,依此類推。實際情況是,無論「社交」節點中有多少「媒體」子節點,下拉列表中的所有五個都選擇了等於最後一個「媒體」子節點的「ID」屬性的值。因此,如果有四個「媒體」子節點,則所有五個下拉列表都具有第四個「媒體」子節點的「ID」屬性的選定值。下面的所有代碼都包含在「if(Page.IsPostBack == false)」條件中。
int s = 1;
XmlNodeList allSocials = getPublisherData.SelectNodes("publisher/social/media");
foreach (XmlNode eachSocial in allSocials)
{
if (s == 1) { ddlSocial1.SelectedValue = eachSocial.Attributes["ID"].Value.ToString(); txtSocial1.Text = eachSocial.InnerText; } else { ddlSocial1.SelectedValue = "select"; }
if (s == 2) { ddlSocial2.SelectedValue = eachSocial.Attributes["ID"].Value.ToString(); txtSocial2.Text = eachSocial.InnerText; } else { ddlSocial2.SelectedValue = "select"; }
if (s == 3) { ddlSocial3.SelectedValue = eachSocial.Attributes["ID"].Value.ToString(); txtSocial3.Text = eachSocial.InnerText; } else { ddlSocial3.SelectedValue = "select"; }
if (s == 4) { ddlSocial4.SelectedValue = eachSocial.Attributes["ID"].Value.ToString(); txtSocial4.Text = eachSocial.InnerText; } else { ddlSocial4.SelectedValue = "select"; }
if (s == 5) { ddlSocial5.SelectedValue = eachSocial.Attributes["ID"].Value.ToString(); txtSocial5.Text = eachSocial.InnerText; } else { ddlSocial5.SelectedValue = "select"; }
s = s + 1;
}
這是一個帶有C#代碼的.aspx頁面。我在運行Windows Pro 10的Surface Pro 3上使用Visual Studio Community 2015.
添加: 我嘗試用以下代碼替換上面的代碼,該代碼是從舊項目中提取的。我試圖修改XML文件以在具有「foreach XMLNode」迭代導致問題的預感上具有「media1」,「media2」等子節點。
ddlSocial1.Items.FindByValue(getPublisherData.SelectSingleNode("publisher/social/media1").Attributes["ID"].Value.ToString()).Selected = true;
ddlSocial2.Items.FindByValue(getPublisherData.SelectSingleNode("publisher/social/media2").Attributes["ID"].Value.ToString()).Selected = true;
結果:我得到各國,一個錯誤「無法在一個DropDownList選擇了多個項目。」