chiname

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

一个DataGrid 的CheckBoxColumn

最近,因为需要用到在DATAGRID 中放置一些CheckBox 来判断是否选中某一行。本来可以使用javascript来实现。不过使用脚本实现,调试起来十分不方便,因此做一个后台代码的CheckBox 列来控制。
需要制作自定义功能的DATAGRID 列,需要继承DataGridColumn 这个类。然后重写 InitializeCell 这个方法来进行对这个自定义的列进行控制。代码中包含了记录选中的项,和没有被选中的项,并且可以在一个DataGrid中同时使用多个这样的CheckBox 列,只需要使用时通过ID属性区分就可以。
代码如下:
 1public override void InitializeCell(TableCell cell, int columnIndex, ListItemType itemType) 
 2        {
 3          
 4            //let the base class initialize the cell
 5            base.InitializeCell(cell, columnIndex, itemType);
 6
 7            //we don't want to add a checkbox to the header.
 8            if(itemType == ListItemType.EditItem || itemType == ListItemType.Item || itemType == ListItemType.AlternatingItem || itemType == ListItemType.SelectedItem){
 9
10                HtmlInputCheckBox checkbox = new HtmlInputCheckBox();
11                //assign an ID that we can use to find the control later
12                if(_strId==String.Empty)
13                {
14                    checkbox.ID = "checkboxCol";
15                }

16                else
17                {
18                    checkbox.ID=myID;
19                }

20        
21                cell.Controls.Add(checkbox);
22
23            }

24
25        }

这里只是继承DataGridColumn 重写InitializeCell函数的部分。

如何使用的代码片段
<dgctl:CheckBoxColumn HeaderText="用户名" ID="chkUserName">
                                    
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                                
</dgctl:CheckBoxColumn>
                                
<dgctl:CheckBoxColumn HeaderText="用户详细信息" ID="chkUserDetail">
                                    
<HeaderStyle HorizontalAlign="Center"></HeaderStyle>
                                
</dgctl:CheckBoxColumn>

完整代码下载
posted on 2005-11-07 12:57 BlackAngel 阅读(385) 评论(2)  编辑 收藏 收藏至365Key 所属分类: ASP.netC#

评论:
# re: 一个DataGrid 的CheckBoxColumn 2005-11-07 14:10 | 秋日私语
你有没有试过用 DataGrid 的模板列,在模板列里添加一个CheckBox,这样会简单很多的
  
# re: 一个DataGrid 的CheckBoxColumn 2005-11-07 14:30 | Boler Guo
为什么要这么做哪?是要在“判断是否选中某一行”是要在客户端判断还是服务器端判断哪?在DataGrid中加CheckBox是一件很有挑战性的工作,不同的需求有不同的做法!
posted on 2005-11-07 21:13  把我的欢乐带给你  阅读(192)  评论(0)    收藏  举报