Tengo una casilla de verificación en el control repeater.
en cambio es un poco de valor, se debe hacer que el mensaje de alerta como hacer u desea eliminar?
y si se selecciona sí, la onselectedchange de eventos del servidor, debe ser despedido.

Ahora. al hacer clic en la casilla de verificación estoy usando el evento onclick a fuego el símbolo del sistema, pero no es capaz de disparar el evento de servidor.

aquí está mi código

<script language="javascript" type="text/javascript">

function CheckedChange() {
         if (confirm('Are you sure you want to delete?'))
             return true;
         else
             return false;
     }
</script>

<asp:Repeater ID="repQuestion" runat="server"  onitemcommand="repQuestion_ItemCommand"                                                    onitemdatabound="repQuestion_ItemDataBound">

<ItemTemplate>
<table  width="100%" cellspacing="0" cellpadding="0">
<tr>
<td>
<asp:CheckBox onclick="return CheckedChange();" ID="delete" runat="server" Checked='<%#DataBinder.Eval(Container.DataItem, "IsDeleted")%>' OnCheckedChanged="chkdelete_Click" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:Repeater>
InformationsquelleAutor Pankaj | 2011-08-30

3 Comentarios

  1. 3

    Evitar este fragmento de código.

    El Repetidor.

    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <table>
                <tr>
                    <td><%# Eval("Index") %></td>
                    <td>
                        <asp:CheckBox ID="delete" runat="server" 
                                AutoPostBack="true"
                                Checked='<%# Convert.ToBoolean(Eval("IsDeleted")) %>'
                                Enabled='<%# !Convert.ToBoolean(Eval("IsDeleted")) %>'
                                OnCheckedChanged="chkdelete_Click" 
                                onclick="javascript:return CheckedChange(this)"/>              
                    </td>
                </tr>
            </table>
        </ItemTemplate>
    </asp:Repeater>

    JavaScript

    function CheckedChange(objCheckBox) {
        if (confirm('Are you sure you want to delete?')) {
            __doPostBack("'" + objCheckBox.id + "'", '');
            return true;
        }
        else {
            objCheckBox.checked = false;
            return false;
        }
    }

    Evento Page_Load

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!IsPostBack)
            {
                //bind gridview here
                DataTable dataTable = new DataTable
                {
                    Columns = { "Index", { "IsDeleted", typeof(bool) } }
                };
                bool temp = true;
                for (var i = 0; i < 6; i++)
                {
                    dataTable.Rows.Add((i + 1).ToString(), temp);
                    temp = !temp;
                }
    
                Repeater1.DataSource = dataTable;
                Repeater1.DataBind();
            }
        }
        catch (Exception exception)
        {
            //Elmah.ErrorSignal.FromCurrentContext().Raise(exception);
        }
    }

    Bien, no me gusta exponer el __doPostBack pero esta parece ser la única manera en este caso.

    En una relación de nota de lado, si usted está mostrando elementos eliminados, su mejor mostrarles movilidad.

    • Da error de javascript «error de tiempo de ejecución de Microsoft JScript: se esperaba un Objeto» en la ejecución de código html.
    • que versión de asp.net están en marcha. estoy corriendo 4.0
    • estoy usando la misma versión
    • he pegado mi trabajo fragmento de código. ¿qué estás haciendo de manera diferente? tal vez no se ajuste AutoPostBack=true?
    • Mi última pregunta en este hilo – ¿por Qué no es recomendable exponer __doPostBack ??
    • porque eso es marco relacionados con la versión. dicen que en un futuro iteración decir asp.net 10.0, los arquitectos tienden a devolución mediante __doit nuestro código será obslete. __dopostback es un nombre y no es garantizado para quedarse para siempre.
    • gracias! trabajó muy bien aquí 🙂

  2. 1

    Tratar pasando el UniqueID (que es el nombre de la Casilla de verificación).

    <asp:Repeater ID="Repeater1" runat="server">
        <ItemTemplate>
            <table>
                <tr>
                    <td><%# Eval("Index") %></td>
                    <td>
                        <asp:CheckBox ID="delete" runat="server" 
                                AutoPostBack="true"
                                Checked='<%# Convert.ToBoolean(Eval("IsDeleted")) %>'
                                Enabled='<%# !Convert.ToBoolean(Eval("IsDeleted")) %>'
                                OnCheckedChanged="chkdelete_Click" 
                                onclick="javascript:return CheckedChange(this)"/>              
                    </td>
                </tr>
            </table>
        </ItemTemplate>
    </asp:Repeater>

    JavaScript

    function CheckedChange(objCheckBox) {
        if (confirm('Are you sure you want to delete?')) {
            __doPostBack("'" + objCheckBox.name + "'", '');
            return true;
        }
        else {
            objCheckBox.checked = false;
            return false;
        }
    }
    • Gracias por la respuesta.
  3. 0

    Probar este

    JS:

        function confirmUser(checkBox)
        {
            if(checkBox.childNodes[0].checked === false){
                alert('Your alert message');
                }
        }

    HTML:

    <asp:Repeater ID="rptSelecteduserRoles" runat="server" OnItemDataBound="rptSelecteduserRoles_OnItemDataBound">
    <ItemTemplate>
                                                            
    <asp:CheckBox ID="chkBox" CssClass="fieldLabel" AutoPostBack="False" onchange="confirmUser(this)"runat="server" Text='<%# Eval("Name") %>' />
                                                            
     </ItemTemplate>
     </asp:Repeater>

Dejar respuesta

Please enter your comment!
Please enter your name here