asp.net/c# --- как зациклить флажок в div? - PullRequest
0 голосов
/ 21 июня 2011

На одной из моих веб-страниц в теге div есть 12 элементов управления флажками.Я хочу убедиться, что пользователь установил хотя бы один флажок в элементе div после отправки формы на одной из моих веб-страниц asp.net.Любая идея?Я имею в виду серверную часть.Я сделал на стороне клиента, но, как вы знаете, никто не может гарантировать, что все клиентские браузеры включают JavaScript.

Ответы [ 6 ]

1 голос
/ 21 июня 2011

Поскольку вы используете ASP.Net, вы можете рассмотреть возможность использования <asp:CheckboxList /> управление, и добавьте <asp:CustomValidator> плюс функции проверки, которые гарантируют, что один флажок был установлен.

0 голосов
/ 21 июня 2011

Хотя я согласен с тем, что другие говорили о валидаторах, этот код делает то, что вы хотите:

int i = 0;
foreach (Control ctl in myForm.FindControl("myDiv").Controls)
{
    if (ctl is CheckBox)
    {
        if (((CheckBox)ctl).Checked)
            i++;
    }
}
0 голосов
/ 21 июня 2011

Если вы просто хотите проверить это на стороне сервера и не возражаете против автопостбэка, попробуйте. Просто установите обработчик события SelectedIndexChanged и проверьте, не выбран ли там параметр. Затем вы можете отобразить ошибку по вашему выбору.

Вот код списка флажков:

    <asp:CheckBoxList ID="chkBxList" runat="server" AutoPostBack="true" 
        onselectedindexchanged="chkBxList_SelectedIndexChanged">
        <asp:ListItem>option1</asp:ListItem>
        <asp:ListItem>option2</asp:ListItem>
        <asp:ListItem>option3</asp:ListItem>
    </asp:CheckBoxList>
    <asp:Label id="lblError" runat="server"></asp:Label>

Codebehind:

protected void chkBxList_SelectedIndexChanged(object sender, EventArgs e)
{
    bool oneSelected = false;
    foreach (ListItem item in chkBxList.Items)
    {
        if (item.Selected)
            oneSelected = true;
    }

    if (!oneSelected)
        lblError.Text = "Please select an option from the checkbox list.";
    else
        lblError.Text = "At least one checkbox is selected";
}

Даже если клиент отключит JS, он по-прежнему будет выбирать хотя бы один.

0 голосов
/ 21 июня 2011

Вы хотите посмотреть на свойство OnClientClick элемента управления asp: CheckBox.

Вот пример:

<asp:CheckBox runat="server" OnClientClick="alert(this.checked);" />

В вашем коде JavaScript (вызываемом обработчиком) вы можетепросматривайте все дочерние элементы div в поисках входных данных типа флажка.JQuery лучше всего подходит для этого.Вы можете использовать что-то вроде этого:

function countChecked() {
  return $("input:checked").length;
}

Эта функция выше вернет количество отмеченных флажков.После этого проверить вашу форму тривиально.Просто не забудьте вернуть false из обработчика, вызванного OnClientClick, чтобы избежать обратной передачи (в случае, если ваша форма не проверяется).

Я только что понял, что вы редактировали свой вопрос, когда я печатал ответ.Выше приведено только решение на стороне клиента.

0 голосов
/ 21 июня 2011

Должен ли это быть C #?Звучит намного проще, если вы только что сделали это в javascript.

0 голосов
/ 21 июня 2011

Можете ли вы использовать JQuery? Если это так, проверьте это:

Получить список отмеченных флажков в div, используя jQuery

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...