下拉不选择正确的文字

时间:2011-08-08 14:30:18

标签: c# asp.net

我以下面的方式绑定数据库中的下拉列表

-- Select an item --
Bicycles
Matresses
Games

我正在选择第一个项目作为默认值..但是如果客户端是现有客户端并且之前保存了这个,那么表格会说他们选择了例如“床垫”,我遇到的问题是绑定它和当他们的客户回到这个页面时,选择“床垫”。当我做

  ddlmyItems.SelectedIndex = ddlmyItems.Items.IndexOf
   (ddlmyItems.Items.FindByText("Matresses"));

选择正确的索引,但下拉列表如下所示

-- Select an item --
Bicycles
-- Select an item --  //this is supposed to be Matresses
Games

我也尝试将文本更改回原来的名称,但它不起作用

 ddlmyItems.SelectedItem.Text = "Matresses";

知道为什么它没有在第三项上找到正确的“文字”?或者我该怎么做?

谢谢

=============================================== ===========

  private void BindShippingDropDown(TList<StoreItems> storeItemsList, string countryCode)
{
    ddlmyItems.Items.Clear();

    ListItem liDefault = new ListItem("Select an Item", "0");

    ddlmyItems.Items.Add(liDefault);

    DataSet ds = storeItemsList.ToDataSet(false);
    DataView dv = new DataView(ds.Tables[0]);

    dv.RowFilter = "DestinationCountryCode = '" + countryCode + "' or DestinationCountryCode is null";

    if (dv.ToTable().Rows.Count > 0)
    {
        foreach (DataRow dr in dv.ToTable().Rows)
        {
            string description = dr["Description"].ToString();

            System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("&reg;");
            description = regex.Replace(description, "®");
            ListItem li = new ListItem(description, dr["ItemID"].ToString());
            ddlmyItem.Items.Add(li);
        }


         ddlmyItems.SelectedIndex = 0;
    }
}

3 个答案:

答案 0 :(得分:1)

如果我不得不对此进行抨击,我认为你的副本“选择一个项目”是由AppendDataBoundItems="true"

引起的

我可能会做的是挂钩下拉的OnDataBound()事件,并在索引0处插入“选择项目”文本。

然后,如果你想预先选择“床垫”,可能是这样的吗?

var item = dropDownList.Items.FindByText(yourValue);
if(item != null)
{
    dropDownList.ClearSelection();
    item.Selected = true;
}

这里可能还有其他东西(更新面板等)可能会让我的建议失效。如果这不起作用;发布DropDown的代码,以及处理数据绑定和选择逻辑的任何代码。

答案 1 :(得分:0)

您可以使用以下方法

来完成此操作

ddlmyItems.Items.FindByText(“Matresses”)。Selected = true;

如果你使用这种方式意味着即使下拉列表中的值不可用,也不会产生异常。

答案 2 :(得分:0)