《ASP.NET》数据绑定—DataList实践篇

上篇文章大概讲了DataList的一些基础知识,掌握这些知识在将来的应用中起到很大的作用,现在我们就开始讲上篇文章中说的基础知识做一个小例子。

首先,我机子的数据库中有一张person表,如下图所示。

现在,我们用DataList控件将表中的信息显示出来,并可以在DataList控件上对数据库中的表进行编辑操作。

1、首先用vs创建web应用程序,添加web窗体,在web窗体内拉入DataList控件,右击控件,选择编辑项模板,在这里我们能看到四个模板,其中两个是SelectedItemTemplate和EditItemTemplate,在ItemTemplate模板中拉入两个LinkButton控件,一个将Text改名为查看,CommandName属性改成select,另外一个将Text改成编辑,其CommandName属性改成edit。然后在HTML页面创建SelectedItemTemplate模板,在模板中绑定员工的所有信息。(这里是实现查看员工详细信息的功能)。

2、在EditItemTemplate模板项中添加两个LinkButton控件,Text属性分别为保存和取消,CommandName属性分别为update和cancel,然后再添加一个TextBox控件,用来输入姓名,在这里实现修改员工姓名的功能。

3、我们还可以在属性生成器总更改表格的样式、将字体的颜色、网格的距离更改一下,这里详细不住不再敖述,最后结束模板编辑。

4、编辑前台HTML代码

ItemTemplate模板中的代码(用来显示员工的姓名)

                <ItemTemplate>
                    <asp:LinkButton ID="lbtnShowDetails" runat="server" CommandName="select" ForeColor="Red">查看</asp:LinkButton>
                    <asp:LinkButton ID="lbtnEdit" runat="server" CommandName="edit" ForeColor="Red">编辑</asp:LinkButton>
                    <%# DataBinder.Eval(Container.DataItem,"personName") %>
                </ItemTemplate>

SelectedItemTemplate模板中的代码(用来显示员工中的详细信息)

                 <SelectedItemTemplate>
                    员工编号: <%# DataBinder.Eval(Container.DataItem,"pID") %>
                    <br />
                    员工姓名: <%# DataBinder.Eval(Container.DataItem,"personName") %>
                    <br />
                    员工性别: <%# DataBinder.Eval(Container.DataItem,"personSex") %>
                </SelectedItemTemplate>

EditItemTemplate模板中的代码(用来修改员工姓名)注意:将文本框中的text属性绑定到员工的姓名上。

                <EditItemTemplate>
                    <asp:LinkButton ID="lbtnupdate" runat="server" CommandName="update">保存</asp:LinkButton>
                    <asp:LinkButton ID="lbtnCancel" runat="server" CommandName="cancel">取消</asp:LinkButton> <br />
                    员工编号:<%# DataBinder.Eval(Container.DataItem,"pID") %><br />姓名:<asp:TextBox ID="txtName" runat="server" <span style="color:#FF0000;">Text='<%# DataBinder.Eval(Container.DataItem,"personName") %>'</span> Width="50px"></asp:TextBox>
                </EditItemTemplate>

最后是页眉和页脚模板

              <HeaderTemplate>
                    模板的页眉
                </HeaderTemplate>
               <FooterTemplate>
                    <br />
                    模板的页脚
                </FooterTemplate>

5、编辑好了的前台界面如下

6、后台代码的编写

6.1、 编写DataList数据绑定的方法

 private void dataBindToDataList()
        {
            SqlConnection con = DB.createConnection();
            SqlDataAdapter sda = new SqlDataAdapter();
            string sql = "select * from person ";
            sda.SelectCommand = new SqlCommand(sql, con);
            DataSet ds = new DataSet();
            sda.Fill(ds, "per");
            DataList1.DataKeyField = "pID";  //将主键存入到DataKeys集合当中,以便后面对某一条数据进行编辑。
            DataList1.DataSource = ds.Tables["per"];
            DataList1.DataBind();
        }

6.2、编写Page_Loda事件,判断页面是否第一次加载,并在第一次加载页面时绑定数据。

   protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                this.dataBindToDataList();
            }
        }

6.3、编写DataList1_ItemCommand事件,实现查看员工详细信息功能(前提是我们已经在SelectedItemTemplate模板中将员工的详细信息已经绑定,现在只是调用方法将其显示出来)

 protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)// e表示DataList传递给该函数的信息。
        {
            if (e.CommandName == "select")
            {
                this.DataList1.SelectedIndex = e.Item.ItemIndex;
                this.dataBindToDataList();
            }
        }

6.4、编写DataList1_EditCommand事件,实现编辑功能,将EditItemTemplate模板中的信息显示出来。

protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)// e表示DataList传递给该函数的信息。
        {
            this.DataList1.EditItemIndex = e.Item.ItemIndex;//e.Item表示DataList中发生事件的那一项
            this.dataBindToDataList();

        }

这时候,编辑模板项的绑定信息就会显示出来,我们可以在这更改姓名,或者取消编辑,效果图如下

     

最后是取消修改功能的代码、更新功能的代码、删除功能的代码,事件分别为DataList1_CancelCommand、DataList1_UpdateCommand、DataList1_DeleteCommand。

protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e)// e表示DataList传递给该函数的信息。
        {
            DataList1.EditItemIndex = -1;  //当EditItemIndex属性值为-1时,表示不显示EditItemTemplate模板
            dataBindToDataList();
        }

        protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
        {
             string ID =DataList1.DataKeys[e.Item.ItemIndex].ToString();
             string name = ((TextBox)e.Item.FindControl("txtName")).Text ;
             SqlConnection con = DB.createConnection();
             SqlCommand cmd = new SqlCommand("update person set personName='"+name+"'where pID='"+ID+"'",con);
             cmd.ExecuteNonQuery();
             DataList1.EditItemIndex = -1;
             dataBindToDataList();
        }
        protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e)
        {
            string ID = DataList1.DataKeys[e.Item.ItemIndex].ToString();
            SqlConnection con = DB.createConnection();
            SqlCommand cmd = new SqlCommand("delete from person where pID='" + ID + "'", con);
            cmd.ExecuteNonQuery();
            DataList1.EditItemIndex = -1;
            dataBindToDataList();
        }

总结

用DataList控件实现对数据库中person表的操作,实现查看详细信息,修改操作,大致流程是先修改DataList控件的各个模板中绑定的数据,然后等待具体的事件使该模板中的内容显示出来,最后再对数据进行操作。当数据适配器DateAdapter对象将数据源中的数据填充到DataSet中后,我么可以用DataList.DataKeyField=“主键字段名” 语句将主键添加到DataList的DataKeys集合中,当我们要修改数据的时候可以再从该集合中取出要编辑的数据项的主键,语句为DataList1.DataKeys[e.Item.ItemIndex]。这样我们就可以随心所欲的修改DataList表中的数据项了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-15 09:07:14

《ASP.NET》数据绑定—DataList实践篇的相关文章

asp:DropDownList数据绑定

开始以为asp:DropDownList数据绑定要是datatable类型的,当时写的时候没注意,就写成了List<T>绑定到了dropdownlist上,结果只有将DataValueField和DataTextField这两个属性设置到相应的列上,数据同样可以完成绑定. 下面贴出绑定的流程: 后台代码: protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { this.name2.DataSource

ASP.NET中DataList数字分页代码

ASP.NET中DataList数字分页代码 转 荐 好长时间没发东西了, 之前一段时间一直在做别的东西, 最近java实验室要开搞系统哈哈, 重新学习.net 这个分页困扰了我这个菜鸟好久阿, 搞了好久终于找到这段代码, 还是数字分页, 试了成功了~还不会分页的朋友看到这个就偷笑吧~~ 代码转自http://hi.baidu.com/honfei css样式取自吴旗娃aspnetpager 效果: 共1页       首页 上一页  1 2 3 4 5 6 7 8 9 10 ....下一页 末

《ASP.NET》数据绑定—DataList

DataList控件是.NET中的一个控件.DataList控件以表的形式呈现数据(在属性生成器中可以编辑),通过该控件,您可以使用不同的布局来显示数据记录(使用模板编辑),例如,将数据记录排成列或行的形式.您可以对 DataList控件进行配置,使用户能够编辑或删除表中的记录(使用EditItemTemplate模板和SelectedItemTemplate模板).DataList控件不使用数据源控件的数据修改功能,您必须自己提供此代码. 一.DataList 与 Repeater比较 1.D

030. asp.net中DataList数据绑定跳转(两种方式)的完整示例

前台代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" MaintainScrollPositionOnPostback="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran

C#(ASP.NET) DataList数据库数据绑定

DataList数据绑定 1.连接数据库 (1)创建连接字符串 (2)创建连接对象 2.获取存储过程 (1)创建存储过程 (2)获取存储过程 3.获取数据表 (1)创建SqlDataAdapter对象 (2)填充SqlDataAdapter对象 (3)返回DataTable对象 4.数据绑定 (1)设置DataList.DataSource属性 (2)编写前端DataList控件及子控件 (3)给子控件赋值 <%# Eval("数据列名称")%> //Web.Config文

ASP.NET数据绑定控件

数据绑定控件简介 数据绑定分为:数据源 和 数据绑定控件 两部分,数据绑定控件通过数据源来获得数据,通过数据源来隔离数据提供者和数据使用者,数据源有:SqlDataSource,AccessDataSource,ObjectDataSource,LinqDataSource,XmlDataSource 等大部分不会直连接数据库,所以SqlDataSource,AccessDataSource不会使用ObjectDataSource 是WEB开发中应用最广的数据源,也能很容易的进行数据库切换数据绑

【转】Asp.net 用datalist嵌套的方法实现二级菜单的分类导航

刚开始学习Asp.net做网站的时候, 做的是一个电子图书购买网站,发现图书有多级类目.   例如:小说分类下面世界名著,中国古典小说.......  文学类目下有 文学理论 中国古典诗歌. 这些要是直接写死在网站里面的话,不利于后面去添加和修改分类,这样做的话是非常不利于后期网站维护的.那么有什么办法把两级分类数据都通过去后台输入,前台去读取呢?也就是这些分类存在数据库中,实现动态读取. 找了些资料,然后我整合下,终于可以应用到自己的网站了.  用的是Listview或者datalist嵌套.

ASP.NET数据绑定

数据绑定是ASP.NET提供的另一种访问数据库的方法.与ADO.NET数据库访问技术不同的是:数据绑定技术可以让程序员不关注数据库连接.数据库命令以及如何格式化这些数据以显示在页面上等环节,而是直接把数据绑定到HTML元素和Web控件. 数据控件则是用来显示从数据库中获取的数据. 数据绑定的原理: 首先要设置控件的数据源和数据的显示格式,设置完成后,控件就会自动处理剩余的工作以把要显示的数据按照要显示的格式显示在页面上. 数据绑定的类型  1. 单值绑定. 可以通过单值绑定的方式把数据添加到AS

ASP.NET(C#)——DataList控件——商品展示

<asp:DataList ID="Good" runat="server" DataKeyField="ID" DataSourceID="SqlDataSource1" RepeatColumns="4"> <ItemTemplate> <img src="../src/picture/<%#Eval("Image") %>&quo