如何在网格中使用批量编辑复选框列?



我的Radgrid中有一个复选框列。我使用批量编辑来编辑值。在列的itemtemplate中,我需要根据数据库中的数据显示"是"/"否"值,该值为1或0,当单击单元格时,如果值为"否",则复选框应未选中,反之亦然。

当我点击itemtemplate单元格进行编辑时,复选框在edititemtemplate中总是被选中(即使itemtemplate中的值为No),这是不期望的。

<telerik:GridTemplateColumn HeaderText="Locked?" UniqueName="Locked" DataField="LockedInd" SortExpression="LockedInd">                   
<ItemTemplate>
<asp:Label ID="lblLocked" runat="server" Text='<%# Convert.ToBoolean(Eval("LockedInd")) ? "Yes" : "No" %>' />
</ItemTemplate>
<EditItemTemplate>
<asp:CheckBox runat="server" ID="chkLock" Checked='<%# Bind("LockedInd")%>'/>
</EditItemTemplate>
</telerik:GridTemplateColumn>

Per Telerik's documentation

当EditMode设置为Batch时,不支持数据绑定表达式EditItemTemplate中允许的。RadGrid将(尝试)设置编辑器的值使用JavaScript .

Telerik将尝试自动确定正在编辑的控件的值应该是什么,因此项目模板中的选中复选框将合理地转换为编辑模板中的选中复选框,但是标签不能直观地转换为复选框。

不使用其他列类型或控件的最简单的解决方案是挂钩clientSettings-ClientEvents-OnBatchEditOpened事件并解析标签的值以相应地设置复选框。

我认为这也许可以解释你总是真实的行为…因为存储在标签中的数据是基于文本/字符串的,当telerik试图分配标签的值时(使用如上所述的javascript),一个非空/非空字符串"1"或"0";

最新更新