下拉列表选择的值不起作用

时间:2012-05-03 10:14:50

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

在我的ASP.NET项目中。我有两个下拉列表和一个复选框。选中此复选框后,所选的DropDownList1值必须与DropDownList2的选择值相同。但DropDownList1.SelectedValue无效。

这是我的代码:

protected void chkSameBAddress_CheckedChanged(object sender, EventArgs e)
{
    try
    {
        if (this.chkSameBAddress.Checked == true)
        {

          this.txtcSAddress1.Text=  this.txtcBAddress1.Text;
          this.txtcSAddress2.Text = this.txtcBAddress2.Text;
          this.txtcSAddress3.Text = this.txtcBAddress3.Text;
          this.txtcSAddress4.Text = this.txtcBAddress4.Text;
          this.txtcSCity.Text = this.txtcBCity.Text;
          this.txtcSPostCode.Text = this.txtcBPostCode.Text;
          this.txtcSState.Text = this.txtcBState.Text;

          this.ddlcSCountry.Items.FindByValue(ddlcBCountry.SelectedItem.Value).Selected = true;


        }

    }
    catch (Exception ex)
    {
        logger.Error(ex.Message);
        throw;

    }
}

如上例所示,如果选中 chkSmaeBAddress ,则 ddlcSCountry 的选定值必须与 ddlcBCountry 选定值相同。< / p>

7 个答案:

答案 0 :(得分:19)

您在哪里将数据绑定到这些下拉列表控件?它们应该仅在页面的初始加载中绑定,如下所示。我怀疑你在每个页面加载时绑定它们,因此选择的值消失。

protected void Page_Load(object sender, EventArgs e)
{

    if (!Page.IsPostBack)
    {
        //Please check if you are binding checkbox controls here. 
        //If not bring them in here
    }
}

其他条件是ddlcSCountry和ddlcBCountry都应该具有相同的值才能选择。否则ddlcSCountry.Items.FindByValue(ddlcBCountry.SelectedItem.Value)将为null,并在尝试设置Selected属性时抛出错误

如果以上两个条件都合适,那么您的代码应该可以正常工作。

编辑抱歉,我的评论代码应该是检查下拉列表控件的绑定而不是复选框。所以它应该是

//Please check if you are binding both dropdown list controls here. 
//If not bind them within the if (!Page.IsPostBack)

if (this.chkSameBAddress.Checked == true)内的CheckedChanged event行中放置一个断点,看它正在执行,然后是运行时值...

答案 1 :(得分:2)

当然,您正试图让下拉框相等?

使用

ddlcSCountry.SelectedIndex = ddlcSCountry.FindStringExact(ddlcBCountry.Text);

这将选择列表中的匹配选项,而不仅仅是在字段中设置文本,这在您的文本选项具有基础值时非常有用。

答案 2 :(得分:2)

接受的解决方案是最常见原因的明显解决方案,然而,还有一个令人惊讶的问题可能导致这种情况发生!

我的列表值来自数据库,并且值已从数据库值换行换行和回车:\r\n。这些价值看起来像一个无辜的空间,但实际上它们不是!

我的解决方案是删除这些隐藏的Char值。希望它有所帮助。

答案 3 :(得分:0)

尝试选择

ddlcSCountry.Text=ddlcBCountry.SelectedItem.Value;

它将选择所需的项目

答案 4 :(得分:0)

确保chkSameBAddress.AutoPostBack设置为true。如果它已设置但仍然不起作用,请考虑使用UpdatePanel控件或使用JavaScript将该逻辑移动到客户端。

答案 5 :(得分:0)

确保在DropDownList的属性中将AutoPostBack设置为true。

答案 6 :(得分:0)

我只是改用from itertools import chain [i for i in chain(*mylist1) if i % 2 == 0] 我只需要对背后的代码做些微修改,它们就可以更好地工作。