11

在我的 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选定的值相同。

4

7 回答 7

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并查看它正在执行,然后运行时值...

于 2012-05-03T11:52:46.853 回答
3

公认的解决方案是最常见原因的明显解决方案,但是,还有一个更令人惊讶的问题可能导致此问题!

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

我的解决方案是删除这些隐藏的 Char 值。希望能帮助到你。

于 2015-04-01T03:57:19.773 回答
2

您确定要使下拉框相等吗?

利用

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

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

于 2012-05-03T10:30:58.643 回答
0

确保将chkSameBAddress.AutoPostBack其设置为 true。如果已设置但仍无法正常工作,请考虑使用UpdatePanel控件或使用 JavaScript 将该逻辑移至客户端。

于 2012-05-03T10:30:12.733 回答
0

试试这个选择

ddlcSCountry.Text=ddlcBCountry.SelectedItem.Value;

它将选择需要的项目

于 2012-05-03T10:20:04.490 回答
0

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

于 2014-08-18T22:53:51.120 回答
0

我只是切换到使用<select runat="server" id="test1"></Select> 我只需要对后面的代码进行轻微修改,一切都会更好。

于 2019-06-22T02:12:42.057 回答