2016-11-28 54 views
0

我有一個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選擇了多個項目。」

回答

0

我完全不理解這個問題,但它顯然與我填充下拉列表的方式有關。

這是我用來填充下拉列表的代碼。

XmlDocument getSocMedia = new XmlDocument(); 
getSocMedia.Load(Server.MapPath("~/App_Data/socialmedia.xml")); 
XmlNodeList allAccounts = getSocMedia.SelectNodes("social/media"); 
foreach (XmlNode eachAccount in allAccounts) 
{ 
    ListItem socID = new ListItem(); 
    socID.Value = eachAccount.Attributes["ID"].Value.ToString(); 
    socID.Text = eachAccount.FirstChild.InnerText.ToString(); 
    ddlSocial1.Items.Add(socID); 
    ddlSocial2.Items.Add(socID); 
    ddlSocial3.Items.Add(socID); 
    ddlSocial4.Items.Add(socID); 
    ddlSocial5.Items.Add(socID); 
} 

我刪除了這個,並直接進入下拉列表項目.aspx文件,現在它工作正常。我不知道它爲什麼會起作用,並且在浪費了很多時間之後,我不在乎。有用。夠好了。

相關問題