使用 C# 如何从 Telerik GridCheckBoxColumn 获取值

Using C# How can I get the Value from a Telerik GridCheckBoxColumn

我有一个带有 GridCheckBoxColumn 的 Telerik RADGrid 如果复选框值为 true,我希望整个行的背景颜色为绿色。作为我的第一步,我尝试使用下面的代码获取复选框列的值。

protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
    {
        foreach (GridDataItem item in RadGrid1.MasterTableView.Items)
        {
            CheckBox chkbox = item.FindControl("chkPriority") as CheckBox;
            if (chkbox != null && chkbox.Checked)
            {
                string id_ = item["p_id"].Text;
            }
        }

    }

但是此代码未找到任何行,CheckBox 的值始终为空。我怎样才能得到这些值

我修改了代码,现在可以获取复选框的值。我仍然不知道如何设置单元格或行的背景色。这是修改后的代码。

protected void RadGrid1_ItemDataBound(object sender, Telerik.Web.UI.GridItemEventArgs e)
    {

        foreach (GridDataItem item in RadGrid1.MasterTableView.Items)
        {
            CheckBox chkbox = item["chkPriority"].Controls[0] as CheckBox;
            if (chkbox.Checked == true)
            {
                
                GridDataItem dataItem = e.Item as GridDataItem;
               
                
            }
        }

    }

很高兴您知道如何访问复选框的值。 要设置整行的颜色,我建议创建一个 CSS class 来定义颜色(以及您要设置的任何其他样式)。然后根据需要将 class 应用于您的行。

protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
{
    if (e.Item is GridDataItem)
    {
        GridDataItem item = e.Item as GridDataItem;
        CheckBox chkbox = item["chkPriority"].Controls[0] as CheckBox;
        if (chkbox.Checked == true)
        {
             item.CssClass += "MySpecialRow";
            
        }
    }
}

那么 CSS class 可能定义为:

.MySpecialRow 
{ 
  background-color: green; 
  color: white; 
  font-weight: bold;
}

这是一个 link 的 Telerik 文档,它也描述了这一点,并给出了如何修改单个列的示例。

https://docs.telerik.com/devtools/aspnet-ajax/controls/grid/appearance-and-styling/conditional-formatting