转发器中的下拉列表都更新为相同的值

时间:2014-06-06 16:24:12

标签: c# asp.net drop-down-menu repeater

简而言之:转发器中的所有下拉列表都会更新为相同的值。

我有一个转发器。每个项目包含另一个转发器,显示多个用户及其费用&首选货币。

enter image description here

repeater_ItemDataBound事件中,我找到并填充txtcurrency,图像显示这些因用户而异。 我还填充ddlPreferredCurrency下拉列表,然后选择适当的值。

问题是 - 无论最后一个用户的货币设置为什么,所有DropDownLists都会更改为该值,而不仅仅是当前值。

奇怪的是,货币TextBoxes持有它们各自的值,但每个DropDownList的ListItem似乎都是相关的......帮助??

这是我的repeater_ItemDataBound活动:

protected void rptrLinkedUsers_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
        {
            lnk_User_Pxx lup = (lnk_User_Pxx)e.Item.DataItem;

            DropDownList ddlPreferredCurrency = (DropDownList)e.Item.FindControl("ddlPreferredCurrency");

            foreach (ListItem li in countries)
            {
                ListItem ddli = new ListItem();
                ddli.Text = li.Text;
                ddli.Value = li.Value;
                ddlPreferredCurrency.Items.Add(li);
            }


            if (lup != null && lup.PreferredCurrencyID != null && lup.PreferredCurrencyID != 0)
            {
                ListItem selectedListItem = ddlPreferredCurrency.Items.FindByValue(lup.PreferredCurrencyID.ToString());

                ddlPreferredCurrency.ClearSelection();
                selectedListItem.Selected = true;
            }

        }            
    }

1 个答案:

答案 0 :(得分:0)

您将错误的项目添加到下拉列表中。

ddlPreferredCurrency.Items.Add(li);

应该是

ddlPreferredCurrency.Items.Add(ddli);