迭代RadGrid中的行/复选框

Che*_*hiz 5 asp.net foreach telerik radgrid

我有一个带有GridTemplateColumn的Telerik RadGrid,其中包含一个复选框,如下所示:

<telerik:GridTemplateColumn HeaderText="MINE" UniqueName="MyTemplateColumn">
     <ItemTemplate>
          <asp:CheckBox id="MyCheckBox" runat="server"></asp:CheckBox>
     </ItemTemplate>
</telerik:GridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)

我想根据从数据库中读取的值来设置"检查"框.我可以处理ItemDataBound事件并在绑定每一行时读取数据库,但这会导致n次查找.相反,我想处理DataBound,然后一次设置所有值.所以,在那个方法中,我想要这样的代码:

// read all values from database first, then...
foreach(var chkbox in MyRadGrid.MasterTableView.Columns.FindByUniqueName("MyTemplateColumn").FindControl("MyCheckBox")) {
    chkbox.Checked = oneValue;
}
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为FindControl不是GridColumn的方法,它不会生成复选框的可迭代列表.迭代模板列中的复选框的正确方法是什么?谢谢!

Che*_*hiz 16

Telerik在他们的论坛上回复了我,答案如下:

foreach (GridDataItem item in MyRadGrid.MasterTableView.Items) 
{ 
  CheckBox chk = (CheckBox)item.FindControl("MyCheckBox");
  // Set the value here
}
Run Code Online (Sandbox Code Playgroud)

希望这对某人有用!