拦截选择客户端网格上的所有复选框事件

时间:2013-07-02 16:21:13

标签: telerik client-side radgrid

我有一个带有select列和其他列的客户端radgrid。当选中all all复选框时,它会尝试检查网格中的所有行。我不想让它选择每一行,除非它遵守某些条件,所以我添加了一些javascript来做到这一点。 因为它可能不会选择所有行,所以不会选中全选复选框。我想检查此处的全选复选框,以便在取消选中时,它将删除所有选定的行。 寻找一种方法来获取全选复选框或类似内容的点击事件。我不相信有一个与它相关的OnClick事件,但我可能是错的?

1 个答案:

答案 0 :(得分:0)

请尝试使用以下代码段。

.ASPX

<head runat="server">
<title></title>
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<telerik:RadCodeBlock ID="RadCodeBlock1" runat="server">
    <script type="text/javascript">

        function SelecteHeaderItemClick(obj) {

            alert('Header Item Checked');


            var grid = $find("<%= RadGrid1.ClientID %>");
            if (grid) {
                var MasterTable = grid.get_masterTableView();
                var Rows = MasterTable.get_dataItems();
                for (var i = 0; i < Rows.length; i++) {
                    var row = Rows[i];
                    if (parseInt(row.getDataKeyValue('ID')) != 1)
                        row.set_selected($(obj).is(':checked'));
                }
            }
        }
        function SelecteItemClick() {
            alert('Item Checked');
        }
    </script>
</telerik:RadCodeBlock>

                                                                                                                                                                                                                                                                                                                                               

.ASPX.CS

protected void RadGrid1_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)
{
    dynamic data = new[] {
        new { ID = 1, Name ="Name1"},
        new { ID = 2, Name = "Name2"},
        new { ID = 3, Name = "Name3"},
         new { ID = 4, Name = "Name4"},
        new { ID = 5, Name = "Name5"}
    };

    RadGrid1.DataSource = data;
}


protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem item = e.Item as GridDataItem;
        (item["SelectColumn"].Controls[0] as CheckBox).Attributes.Add("onclick", "SelecteItemClick();");
    }

    if (e.Item is GridHeaderItem)
    {
        GridHeaderItem item = e.Item as GridHeaderItem;
        (item["SelectColumn"].Controls[0] as CheckBox).Attributes.Add("onclick", "SelecteHeaderItemClick(this);");
    }
}