Элемент управления .NET CheckBox, поддерживающий свойство Value - PullRequest
2 голосов
/ 07 января 2009

Мне известно, что стандартный элемент управления .NET CheckBox не поддерживает свойство Value. Это кажется мне странным, потому что элемент управления вводом поддерживает значение как часть спецификации html.

Итак, мой вопрос заключается в том, знает ли кто-нибудь здесь о пользовательском элементе управления asp.net, который работает аналогично стандартным ASP .NET CheckBox и CheckBoxList?

Ответы [ 8 ]

2 голосов
/ 08 января 2009

Возможно, я неправильно понимаю ваш вопрос, но знаете ли вы, что вы также можете использовать типичные элементы управления HTML?

Например, создайте страницу ASPX и добавьте следующий источник:

    <div>
            <input type="checkbox" runat="server" id="chkBox" value="test" />
            <asp:Label ID="lblCheckboxValue" runat="server" />
    </div>

    <asp:Button runat="server" OnClick="Button_Click" />

Затем добавьте следующий код:

protected void Button_Click(object sender, EventArgs e)
        {
            if (chkBox.Checked)
                lblCheckboxValue.Text = chkBox.Value;
            else
                lblCheckboxValue.Text = "";

        }

Вы можете установить свойство значения флажка html на любое значение.

1 голос
/ 07 января 2009

Если вам нужен доступ к нему только на стороне сервера, вы можете легко создать серверный элемент управления, который наследует элемент управления Checkbox, и добавить к нему свойство, называемое значением, которое можно установить и получить со стороны сервера.

Однако, если вам нужен доступ к нему со стороны клиента, вам нужно подумать о том, что отображает серверный элемент управления - скорее всего, это сочетание флажка и скрытого поля, в котором скрытое поле содержит значение.

Если все, что вы делаете - это извлекаете значение из отмеченных полей на стороне сервера, я думаю, что будет достаточно простого расширения элемента управления флажками - добавьте дополнительное свойство, которое можно установить и получить с сервера. сторона ... гулять в парке.

0 голосов
/ 10 октября 2016

Это старый вопрос, но все изменилось. Во-первых, в asp.net 4.6 атрибут value будет установлен на флажок. Немногие из этих ответов имеют отношение к CheckBoxList, который использует класс ListItem для создания флажков.

Мое решение для pre-4.6 - добавить атрибут данных. Это создает <span> элемент управления вокруг флажка и метки, который вы можете найти с помощью javascript.

        foreach( ListItem item in selCheckList.Items)
        {
            item.Attributes["data-role-id"] = item.Value;
        }
0 голосов
/ 25 июня 2012

Вы можете создать свой собственный элемент управления, переопределив CheckBox. Вот пример, который я только что создал, чтобы добавить свойство Value, доступное на стороне сервера и клиента:

public class ValueCheckBox : CheckBox
{
    public string Value
    {
        get;
        set;
    }

    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        writer.AddAttribute("value", this.Value);
        base.Render(writer);
    }
}
0 голосов
/ 09 января 2009

Кажется, что значения не отображаются в html, но все еще хранятся в viewstate. Таким образом, я смог получить значение на стороне сервера, когда я получил доступ к объекту ListItem в CheckboxList.Items ()

0 голосов
/ 07 января 2009

Что MS сделал здесь, так это создал свои элементы управления ASP с чувством .net к ним. Однако, поскольку они должны работать с браузерами, они отображают как стандартные элементы управления HTML.

Так что в коде позади cs / vb вы видите .Checked (bool), а в клиенте / javascript вы видите .value.

Если вам нужен уникальный идентификатор, тогда вам нужно посмотреть на ID или ClientID. Кроме того, вы можете добавить атрибут в флажок (.Attributes.Add ()) и использовать его.

0 голосов
/ 07 января 2009

Нет, они не одинаковы

Функция, над которой я работаю, требует, чтобы список обновлений продукта отображался в виде списка флажков. В зависимости от того, какие флажки «отмечены», мне нужно будет добавить их в продукт. Элементы в CheckBoxList являются динамическими, поэтому, когда я перебираю проверенные элементы, мне нужен своего рода уникальный идентификатор. «Проверено» значение только логическое

0 голосов
/ 07 января 2009

Разве «Checked» не совпадает с «Value»?

http://www.w3schools.com/aspnet/control_checkbox.asp

Взгляните туда. Вам на самом деле не нужно свойство с конкретным названием «Значение», потому что «Проверено» даст вам ту же информацию.

...