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