0

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

4

1 回答 1

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);");
    }
}
于 2013-07-03T10:39:56.900 回答