我有一系列下拉列表,在更改时调用一个函数,将整体值从二进制转换为十进制和十六进制。然后,我有一个if语句,检查所有列表是否已更改。我的If语句似乎没有正常工作,如果我在列表中选择0,项目会切换回 - 选择 - 。
以下是下拉列表代码
<asp:DropDownList ID="r1" runat="server" OnSelectedIndexChanged="convert" AutoPostBack="true" >
<asp:ListItem Text="--Select--" Value="0" />
<asp:ListItem Text="0" Value="0" />
<asp:ListItem Text="1" Value="1" />
</asp:DropDownList>
这是if语句
if (r1.SelectedItem.Text != "--Select--" &&
r2.SelectedItem.Text != "--Select--" &&
r3.SelectedItem.Text != "--Select--" &&
r4.SelectedItem.Text != "--Select--" &&
r5.SelectedItem.Text != "--Select--" &&
r6.SelectedItem.Text != "--Select--" &&
r7.SelectedItem.Text != "--Select--" &&
r8.SelectedItem.Text != "--Select--" &&
g1.SelectedItem.Text != "--Select--" &&
g2.SelectedItem.Text != "--Select--" &&
g3.SelectedItem.Text != "--Select--" &&
g4.SelectedItem.Text != "--Select--" &&
g5.SelectedItem.Text != "--Select--" &&
g6.SelectedItem.Text != "--Select--" &&
g7.SelectedItem.Text != "--Select--" &&
g8.SelectedItem.Text != "--Select--" &&
b1.SelectedItem.Text != "--Select--" &&
b2.SelectedItem.Text != "--Select--" &&
b3.SelectedItem.Text != "--Select--" &&
b4.SelectedItem.Text != "--Select--" &&
b5.SelectedItem.Text != "--Select--" &&
b6.SelectedItem.Text != "--Select--" &&
b7.SelectedItem.Text != "--Select--" &&
b8.SelectedItem.Text != "--Select--")
{
cBox.Attributes["InnerHtml"] = "test";
}
else
{
cBox.Attributes["InnerHtml"] = "world";
}
答案 0 :(得分:0)
if (Convert.toString(r1.SelectedItem.Text) != "--Select--")
{
cBox.Attributes["InnerHtml"] = "test";
}
else
{
cBox.Attributes["InnerHtml"] = "world";
}
你可以这样做,剩下的就是
答案 1 :(得分:0)
由于您在"--Select--"
的顶部添加了dropdownlist
,因此您可以使用DropDownList.SelectedIndex
属性而不是DropDownList.SelectedItem
。正如MSDN所说,
DropDownList.SelectedIndex
是DropDownList控件中所选项的索引。默认值为0,它选择列表中的第一项。
if
部分看起来有些混乱。首先使用Extract Method
重构它,如下所示:
private bool AreAllProperValuesSelected()
{
return
(r1.SelectedIndex != 0) &&
(r2.SelectedIndex != 0) &&
(r3.SelectedIndex != 0) &&
(r4.SelectedIndex != 0) &&
(r5.SelectedIndex != 0) &&
(r6.SelectedIndex != 0) &&
(r7.SelectedIndex != 0) &&
(r8.SelectedIndex != 0) &&
(g1.SelectedIndex != 0) &&
(g2.SelectedIndex != 0) &&
(g3.SelectedIndex != 0) &&
(g4.SelectedIndex != 0) &&
(g5.SelectedIndex != 0) &&
(g6.SelectedIndex != 0) &&
(g7.SelectedIndex != 0) &&
(g8.SelectedIndex != 0) &&
(b1.SelectedIndex != 0) &&
(b2.SelectedIndex != 0) &&
(b3.SelectedIndex != 0) &&
(b4.SelectedIndex != 0) &&
(b5.SelectedIndex != 0) &&
(b6.SelectedIndex != 0) &&
(b7.SelectedIndex != 0) &&
(b8.SelectedIndex != 0);
}
您可以使用上述方法的更短版本,如下所示:
private bool AreAllProperValuesSelected()
{
var list = new List<DropDownList>
{
r1,
r2,
r3,
r4,
r5,
r6,
r7,
r8,
g1,
g2,
g3,
g4,
g5,
g6,
g7,
g8,
b1,
b2,
b3,
b4,
b5,
b6,
b7,
b8
};
return list.TrueForAll(item => item.SelectedIndex != 0);
}
然后在if
部分调用它,如下所示:
if (AreAllProperValuesSelected())
{
cBox.Attributes["InnerHtml"] = "test";
}
else
{
cBox.Attributes["InnerHtml"] = "world";
}
答案 2 :(得分:0)
试试这个
if (r1.Text != "--Select--" &&
r2.Text != "--Select--" &&
r3.Text != "--Select--" &&
r4.Text != "--Select--" &&
r5.Text != "--Select--" &&
r6.Text != "--Select--" &&
r7.Text != "--Select--" &&
r8.Text != "--Select--" &&
g1.Text != "--Select--" &&
g2.Text != "--Select--" &&
g3.Text != "--Select--" &&
g4.Text != "--Select--" &&
g5.Text != "--Select--" &&
g6.Text != "--Select--" &&
g7.Text != "--Select--" &&
g8.Text != "--Select--" &&
b1.Text != "--Select--" &&
b2.Text != "--Select--" &&
b3.Text != "--Select--" &&
b4.Text != "--Select--" &&
b5.Text != "--Select--" &&
b6.Text != "--Select--" &&
b7.Text != "--Select--" &&
b8.Text != "--Select--")
{
cBox.Attributes["InnerHtml"] = "test";
}
else
{
cBox.Attributes["InnerHtml"] = "world";
}