65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET DataView 或 Repeater 中的 CheckBox 命令

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.95/5 (23投票s)

2007 年 3 月 9 日

CPOL

2分钟阅读

viewsIcon

145229

downloadIcon

1384

描述了一种在 GridView 或 Repeater 中使用 CheckBox 的非常简单的方法,类似于使用 Button。

Screenshot - main.gif

引言

本文描述了一种在 GridViewRepeater 中使用 CheckBox 的非常简单的方法,类似于使用 Button。 这解决了 CheckBox (CheckBoxField) 中缺少 "CommandName" 属性的问题。

用例

用户浏览一个项目列表,需要一种快速标记某些项目的方法。 例如,指示哪些项目已完成(或已验证)。 并且可能在完成时更新 DateCompleted 字段。

在这种情况下,取消选中会将状态更改回“未完成”,并可能清除 DateCompleted 字段。

ASP.NET 的限制

实现类似结果的标准方法是使用带有指定 CommandNameButton (或 LinkButton)。 GridView (RepeaterOnItemCommand) 的 OnRowCommand 事件处理程序将处理对此按钮的 Click。 然后,您可以在这些处理程序中通过 e.CommandArgument 轻松访问记录 ID。

在许多类似上述的情况下,使用 CheckBox 会更可取——它更紧凑,并且清楚地指示了当前状态。 但是由于 CheckBox 没有 "CommandName" 属性,并且 CheckedChanged 事件在 OnRowCommand (RepeaterOnItemCommand) 中未处理,我们如何获取复选框行的记录 ID,以便正确处理该事件?

解决方案

这再简单不过了:只需将记录 ID 分配为 CheckBoxText 属性,然后通过 CSS 隐藏文本即可。

示例

示例包含一个 ASPX 文件,其中包含绑定到具有列 {ItemID int, ItemDescription string, Flag bool}DataTableGridViewRepeater

Screenshot - Form.gif

GridViewRepeater 都包含一个包含 CheckBoxTemplateField

Screenshot - CheckBox.gif

整个技巧在于 Text='<%#Eval("ItemID")%>'。 请注意,ItemID 是隐藏的,因为 CheckBoxText 属性呈现为 <label>,我们使用此样式隐藏它

Screenshot - css.gif

事件处理程序现在可以轻松访问当前记录 ID 和 CheckBox 的状态

Screenshot - handler.gif

© . All rights reserved.