加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

DataList控件的使用

(2009-02-14 00:44:25)
标签:

datalist控件

分类: ASP.NET

    Repeator、DataList、GridView 是ASP.NET 中三个用于显示数据的控件,DataList 及 GridView 功能更为强大,可进行更新、删除。

以下记录 DataList 控件的使用:

    首先创建数据源,可以使用 SqlDataSource 控件,之后在 DataList 控件的智能按钮功能中选择数据源即可;也可以在后台自定义数据源,并将 DataList 对象的 DataSource 指定为自定义的数据源。

    然后要为 DataList 控件绑定数据,DataList 控件由各个模板组成,包括:

    1.项模板:

  • 基本项模板 ItemTemplate
  • 交替项模板 AlternatingItemTemplate
  • 选择项模板 SelectedItemTemplate
  • 编辑项模板 EditItemTemplate

    2.页眉和页脚模板:

  • 页眉模板 HeaderTemplate
  • 页脚模板 FooterTemplate

    3.分隔符模板

各个模板简述:

    使用 DataList 控件至少要设置基本项模板 ItemTemplate,才能满足显示数据的需要,点击“编辑模板”,系统会自动将数据源中相应数据字段在基本项模板中生成相应的控件。

    交替项实质上与基本项在功能上是一样的,但是在显示数据的时候基本项与交替项的样式有所区别。因而在数据层面两个模板的设置与实现的功能一样,如果不对交替项模板进行任何设置,则系统默认模板中具有与基本项模板相同的控件,用于显示数据。

    选择项模板用于将选择的某一项作特别样式的显示,例如高亮显示。

    项模板中最为重要的就是编辑项模板,我们可以在每一项显示数据的下面添加编辑按钮,当点击之后所选项进入可编辑状态,需要编辑的字段在控件上由 Label 变为 TextBox,编辑完毕进行更新即可。根据以上描述,我们需要设置编辑项模板,点击编辑按钮之前,页面显示基本项模板中的内容,点击之后进入编辑状态,即按照编辑项模板的设置进行显示。因此需要在编辑项模板中根据基本项显示的字段中需要编辑的字段创建 TextBox 控件,以及保存编辑和取消编辑的按钮。

各种功能按钮功能的实现:

    主要用到的按钮包括:

  • 基本项模板中用于触发编辑功能的按钮;
  • 进入编辑模式后用于保存编辑的按钮;
  • 编辑模式中用于取消编辑的按钮;
  • 基本项中用于删除项的按钮。

    系统提供了常用的功能事件:

  • EditCommand 事件,按钮的 CommandName 指定为 edit,当点击按钮时即可触发编辑事件;
  • UpdateCommand 事件,按钮的 CommandName 指定为 update,当点击按钮时即可触发更新事件;
  • DeleteCommand 事件,按钮的 CommandName 指定为 delete,当点击按钮时即可触发删除事件;
  • CancelCommand 事件,按钮的 CommandName 指定为 cancel,当点击按钮是即可触发取消事件。

    各个事件功能的实现:

  • EditCommand 事件:此事件中,需要设置 DataList 控件的 EditItemIndex 属性为当前触发编辑事件的项的索引,这个索引使用 e.Item.ItemIndex 获取;
  • UpdateCommand 事件:由于需要做更新操作,更新数据库的语句需要在此事件中写。由于更新需要用到参照字段作为更新的 where 条件,因此需要根据 e.Item.ItemIndex 取得 DataList 控件的DataKey,即 string id = DataList1.DataKeys[e.Item.ItemIndex].ToString(); 另外要获取需要更新的值,在编辑状态下,可编辑字段控件作为 TextBox 呈现,因而要从控件中获取值,在代码中无法直接通过控件名进行操作,需要首先获取选定的项,再根据项获取其中的控件,再取值。即 string a = ((TextBox)e.Item.FindControl("TextBox1")).Text; 由于 e.Item.FindControl()方法获取的控件类型为 Object,因此需要显式类型转换,再操作控件。这样就可以完成数据的更新;
  • DeleteCommand 事件:实现过程与 UpdateCommand 事件类似,需要取得作为 where 条件的字段值;
  • CancelCommand 事件:此事件中,只需设置 DataList 控件的 EditItemIndex 属性为 -1 即可。

需要注意的问题:

    使用过程中,发现在点击编辑、更新、取消按钮时需要点击两次才能实现想要的效果,解决的办法是在按钮事件处理完毕后,重新进行数据绑定即可。因此定义一个绑定的方法,代码如下:

private void BindData()

{

    DataList1.DataSource=...;

    DataList1.DataKeyField=...;

    DataList1.DataBind();

}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有