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