在我的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>
答案 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]
我只需要对背后的代码做些微修改,它们就可以更好地工作。