复选框服务器/客户端事件 [英] Checkbox server/client events

查看:57
本文介绍了复选框服务器/客户端事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在转发器控件中有一个复选框.在更改它的位值时,它应该像您希望删除一样提示警报消息?如果选择是,则应触发onselectedchange服务器事件.

I have a checkbox in repeater control. on changing it's bit value, it should prompt the alert message like do u wish to delete? and if yes is selected, the onselectedchange server event should be fired.

现在.单击复选框后,我正在使用onclick事件触发提示,但无法触发服务器事件.

Right now. on clicking the checkbox i am using onclick event to fire the prompt but it is not able to fire the server event.

这是我的代码

<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>

推荐答案

解决此代码段.

中继器.

<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

JavaScript

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

Page_Load事件

Page_Load Event

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);
    }
}

好吧,我个人不喜欢公开 __ doPostBack ,但这在这种情况下似乎是唯一的方法.

Well, I don't personally like exposing the __doPostBack but this seems to be the only way in this case.

在不相关的旁注中,如果要显示已删除的项目,最好将它们显示为禁用.

On an unrelated side note, if you are showing deleted items, its better to show them disabled.

这篇关于复选框服务器/客户端事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆