现在的位置: 首页 > 综合 > 正文

关于DataGrid的知识和技巧

2012年05月07日 ⁄ 综合 ⁄ 共 1665字 ⁄ 字号 评论关闭
 

一、DataGrid 整体介绍

Datagrid类似于数据库的表格

记录集由行集(items)和列集(columns)组成

行集由多个datagridColumn组成

列集由多个datagriditem组成

datagridColumn有: BoundColumn:文本字段标准显示,当处于编辑状态,将显示为TextBox

HyperLinkColumn:显示文本数据,同时是一个URL超链接

ButtonColumn:按钮列,包括:

选择按钮       后台事件,可改变选中行的颜色

删除按钮       deleteCommand事件

更新按钮       updateCommand事件

编辑按钮       editCommand事件

普通按钮       itemCommand事件

TemplateColumn:模版列,完全控制哪些控件显示给用户;分为多种模版,如图

HeaderTemplate   用于对页眉的自定义操作

ItemTemplate      项模版,用于显示自定义数据

EditItemTemplate         编辑模版,即:当控件处于编辑状态时,该单元处于哪种状态。

FooterTemplate   用于对页脚的自定义操作

行类型:ListItemType:Header  Footer  Item  AlternatingItem  SelectedItem  EditItem  Separastor  Pager

三个重要事件:

itemCommand 来获取控件事件

ItemCreated

ItemDataBound

二、如何引用DataGrid中的控件:

(一般在ItemCreated或ItemDataBound事件中引用)

对于非模版列:用datagriditem.Cells[第几个单元格].Controls[第几个控件]获得

下标从0开始

可以转换成相应的控件,如:

boundColumn: Label     EditColumn: TextBox  LinkColumn:DataGridLinkButton …

对于模版列:用datagriditem.findcontrol[“控件名称”] 获得

三、DataGrid绑定事件的触发流程
 

DataBinding:只要执行了DataBind方法,
就会马上激发这个事件。


ItemCreated主要是创建行(行容器),
ItemDataBound将数据存放于该行容器
数据绑定)。依次循环

如要在创建时手工添加自定义控件
(不使用模版列),则需要
在ItemCreated事件中绑定

三、DataGrid Item 构建行的流程
(itemcreated)

 



四、DataGrid绑定事件的常见问题

引用e.Item.DataItem 报错对象不能为null ” 

         原因:没有在itemcreateditemdatabound下判断行类型.

    (DataRowView)(e.Item .DataItem)  只有在:

 item行、AlternatingItem行、selecteditem行、edititem行才有值

数据绑定完之后如何访问某行数据?

 可以使用datagriditem来搜索,代码结构如下:

   for each (datagriditem dgi in Datagrid1.items)

   {    }

    切记:不可用dgi.dataitem 来访问

                    因为在itembound之后已重新为null

五、使用ItemCreated事件注意事项

private void DataGrid1_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)

{

if(e.Item.ItemType==ListItemType.Item)

  {

         //此处添加对类型为Item的代码,

  }

}

当加载、修改行属性或者行内的控件属性时,应该判断ItemType类型,因为每个单元格均有不同的项类型的呈现方式

 

抱歉!评论已关闭.