zoukankan      html  css  js  c++  java
  • 关于DataGrid的知识和技巧

     

    一、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类型,因为每个单元格均有不同的项类型的呈现方式

     

  • 相关阅读:
    实现CSS圆环的5种方法(小结)
    父组件向子组件传递数组格式数据
    Vue里的data声明方式:data{},data(){}
    浏览器输入 URL 回车之后发生了什么?
    vue中跳转链接
    Github上 10 个开源免费且优秀的后台控制面板
    vueelementadmin之修改侧边栏的icon图标以及图标颜色
    vue组件库选择pc端和手机端
    8月24日学习日志
    8月28日学习日志
  • 原文地址:https://www.cnblogs.com/ahuang1118/p/172551.html
Copyright © 2011-2022 走看看