仅选择RadGrid控件中的已启用复选框

时间:2013-11-19 15:33:53

标签: c# asp.net checkbox radgrid

我有一个RadGrid控件,显示已禁用或启用基于数据库值的复选框。

我有一个单选按钮“全选”,需要检查网格中所有已启用的复选框。但是,我无法检测是否启用了复选框。

复选框的html代码为:

<telerik:GridTemplateColumn DataField="Certified" HeaderText="Certified" Visible="true">
    <ItemTemplate>
        <asp:CheckBox ID="CheckBox2" runat="server" AutoPostBack="true" 
        OnCheckedChanged="CheckBox2_CheckedChanged" 
        Enabled='<%# !bool.Parse(Eval("Certified").ToString()) %>' />
    </ItemTemplate>
</telerik:GridTemplateColumn>

我的代码隐藏是:

foreach (GridDataItem dataItem in RadGrid1.MasterTableView.Items)
{
    if (((CheckBox)dataItem.FindControl("CheckBox2")).Enabled != false) ;
    {
        ((CheckBox)dataItem.FindControl("CheckBox2")).Checked = true;
    }
}

如何才能在if语句中仅返回启用的复选框?

2 个答案:

答案 0 :(得分:2)

你有奇怪的逻辑,而 if语句以逗号结尾

if (((CheckBox)dataItem.FindControl("CheckBox2")).Enabled != false) ;

结果,它们变成了两条不同的线。

{
   ((CheckBox)dataItem.FindControl("CheckBox2")).Checked = true;
}

解决方案

foreach (GridDataItem dataItem in RadGrid1.MasterTableView.Items)
{
    var checkbox = dataItem.FindControl("CheckBox2") as CheckBox;
    if (checkbox.Enabled)
    {
        checkbox.Checked = true;
    }
}

答案 1 :(得分:0)

  columns.Bound(c => c.IsSelected)
 .ClientTemplate("<input <#=IsSelected  ? 'checked'  : '' #>  />")