Pergunta

Estou ciente de que o padrão de controle .NET CheckBox não suporta a propriedade Value. Isso parece estranho para mim, porque o controle de entrada faz valor de suporte como parte da especificação HTML.

Então, minha pergunta é se ou não alguém aqui sabe de um controle de usuário personalizada para fora lá para asp.net que funciona semelhante ao padrão ASP .NET CheckBox e CheckBoxList?

Foi útil?

Solução 5

Parece que os valores não são processados ??no html, mas ainda são armazenados no viewstate. Então, eu era capaz de puxar o valor no lado do servidor quando eu acessado o objeto ListItem nas CheckboxList.Items ()

Outras dicas

Talvez eu esteja mal-entendido sua pergunta, mas você está ciente de que você pode usar os controles HTML típicas também?

Por exemplo, criar uma página ASPX e adicione o seguinte fonte:

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

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

Então, em seu código por trás adicione o seguinte código:

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

        }

Você pode definir a propriedade de seleção html valor da caixa para o que quiser.

Se você só precisa de acesso a ele no lado do servidor, você pode facilmente criar um controle de servidor que herda o controle de caixa de seleção e adicionar uma propriedade a que chamou de valor que pode ser definido e recuperado do lado do servidor.

Se você precisar acessá-lo do lado do cliente no entanto, você vai ter que começar imaginitive com o que o controle de servidor torna -. Provável que uma combinação de uma caixa de seleção e campo oculto pelo qual o campo oculto contém o valor

Se tudo que você está fazendo é extrair o valor das caixas marcadas no lado do servidor, eu iria imaginar que uma simples extensão do controle caixa seria suficiente embora - adicionar uma propriedade extra que pode ser definido e recuperado do servidor side ... passeio no parque.

Não, eles não são os mesmos

O recurso que eu estou trabalhando requer uma lista de atualizações de produto a ser mostrado como uma lista de caixas de seleção. Com base no qual caixas são "marcada" i terá de adicioná-los ao produto. Os itens no CheckBoxList são dinâmicas Então, quando eu iterar sobre os itens verificados Eu preciso de algum tipo de identificador exclusivo. O valor "verificado" é apenas um booleano

O MS tem feito aqui é criado seus controles ASP com uma sensação .net para eles. No entanto, uma vez que é suposto para trabalhar com navegadores, eles render como controles HTML padrão.

Assim, no code-behind cs / vb, você vê .checked (bool), enquanto no cliente / JavaScript você vê .value.

Se o que você quer é um identificador único, então você precisa estar olhando para ID ou ClientID. Alternativamente, você pode adicionar um atributo ao checkboxt (.Attributes.Add ()) e usar isso.

Você pode criar seu próprio controle personalizado, substituindo CheckBox. Aqui está um exemplo que acabou de criar para adicionar um lado do servidor e cliente disponíveis propriedade 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);
    }
}

Esta é uma questão de idade, mas as coisas mudaram. Primeiro, em asp.net 4.6, o atributo valor será definido na caixa de seleção. Poucos desta respostas são relevantes para CheckBoxList, que usa a classe ListItem para gerar caixas de seleção.

A minha solução para pré-4.6 é adicionar um atributo de dados. Isso cria um controle <span> em torno da caixa e rótulo que você pode encontrar com javascript.

        foreach( ListItem item in selCheckList.Items)
        {
            item.Attributes["data-role-id"] = item.Value;
        }

não é "verificado" o mesmo que "valor"?

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

Dê uma olhada lá dentro. Você realmente não precisa de uma propriedade especificamente chamado "Valor", porque "verificado" vai lhe dar a mesma informação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top