aspxページには、次のようにcheckBoxリストがあります。 chklstOptionsは、ユーザーがRepOptionAまたはRepOptionBを選択できるようにする必要があり、両方のチェックボックスを同時に選択しないでください。asp.netの別のリスト項目に基づいて、checkBoxlist内の特定のリスト項目だけをチェック/チェック解除する方法
たとえば、RepOptionAが既にチェックされているときにRepOptionBを選択するたびに、RepOptionAをオフにしてRepOptionBをチェックする必要があります。さらに、ユーザーはOptionA、OptionB、OptionCなどの他のオプションを制約なしでチェック/選択解除することができます。誰かがこれまでのところ、この
<asp:CheckBoxList ID="chklstOptions" runat="server" RepeatColumns="2" RepeatDirection="Horizontal" Enabled="false" OnSelectedIndexChanged="chklstOptions_SelectedIndexChanged" OnTextChanged="chklstOptions_SelectedIndexChanged" AutoPostBack="True">
<asp:ListItem Text="OptionA" Value="OptionA" ></asp:ListItem>
<asp:ListItem Text="OptionB" Value="OptionB" ></asp:ListItem>
<asp:ListItem Text="OptionC" Value="OptionC" ></asp:ListItem>
<asp:ListItem Text="RepOptionA" Value="RepOptionA" ></asp:ListItem>
<asp:ListItem Text="RepOptionB" Value="RepOptionB" ></asp:ListItem>
</asp:CheckBoxList>
を実装する方法を提案することができ、私は役に立たないのである以下のコードを、試してみました
protected void chklstOptions_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (ListItem Item in chklstOptions.Items)
{
if (Item.Selected)
{
if (Item.Text == "RepOptionB")
{
if (chklstOptions.Items.FindByText("RepOptionA").Selected == true)
chklstOptions.Items.FindByText("RepOptionA").Selected = false;
chklstOptions.Items.FindByText("RepOptionB").Selected = true;
}
if (Item.Text == "RepOptionA")
{
if (chklstOptions.Items.FindByText("RepOptionB").Selected == true)
chklstOptions.Items.FindByText("RepOptionB").Selected = false;
chklstOptions.Items.FindByText("RepOptionA").Selected = true;
}
}
}
}
そんなことをするとどうなりますか? – Legends
上記のコードでselectedIndexChangedイベントで、RepOptionAが選択され、ユーザーがRepOptionBを選択すると、RepOptionAはチェックされたままです。 RepOptionAのチェックを外し、この場合RepOptionBをチェックする必要があります。 –
解決策はCheckboxListsに作成することです。 1つはRepoptionA/B、もう1つはオプションです。そうしないと、ユーザーが他のオプションをクリックしたときに、最初に選択されたものがわからなくなります。 このようにすることができますが、実行可能ですが扱いにくいですが、最初に選択したRepOption - > AまたはBをサーバーのどこかに保存し、それに応じてAまたはBを非アクティブにする必要があります。実際には2つのチェックボックスリストが表示されます。 – Legends