数据列表DataList模板之实例

1数据列表DataList与重复列表Repeator很类似,但是DataList应用更广泛,因为他可以选择和修改数据项的内容。

DataList的数据显示和布局与Repeator控件一样都是通过“模板”控制的。

(注:模板至少要定义一个“数据项模板”(ItemTemplate)来指定显示布局)

 

2DataList支持的模板类型:

模板

名称

说明

ItemTemplate

数据项模板

必需的,它定义了数据项及其表现形式

AlternatingItemplate

数据项交替模板

为了使相邻的数据项能够有所区别,可以定义交替模板,它使得相邻的数据项看起来明显不同,缺省情况下,他和ItemTemplate模板定义一致,即却剩下相邻数据无表示区分

SeparatorTemplate

分隔符模板

定义数据项之间的分隔符

SelectedItemTemplate

选中项模板

定义被选择的数据项的表现内容与布局形式,当未定义“SelectedItemTemplate”模板时,选中项的表现内容与形式无特殊化,由ItemTemplate模板定义所决定

EditItemTemplate

修改选项模板

定义即将被修改的数据项的显示内容与布局形式,缺省情况下,修改选项模板就是数据项模板(ItemTemplate)的定义

HeaderTemplate

报头定义模板

定义表头变现形式

FooterTemplate

表尾定义模板

 

 
 
实例:
用到的数据库charge_sys中的student_Info表:

studentNo

studentName

grade

cash

1

韩学杨

大一

123.000

2

韩寒

大二

123.000

3

韩红

大三

222.000

4

韩学敏

大四

20000.000

 
程序在Default.aspx中:
Default.aspx中:
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>  
  2.   
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  4.   
  5. <html xmlns="http://www.w3.org/1999/xhtml">  
  6. <head runat="server">  
  7.     <title>DataList控件练习</title>  
  8. </head>  
  9. <body>  
  10.     <form id="form1" runat="server">  
  11.   <div>  
  12.      <!--添加控件“DataList1”,并设置属性-->  
  13.         <asp:DataList ID="DataList1" runat="server" BackColor="LightGoldenrodYellow"   
  14.             BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black"   
  15.             oncancelcommand="DataList1_CancelCommand" oneditcommand="DataList1_EditCommand"   
  16.             onitemcommand="DataList1_ItemCommand" onupdatecommand="DataList1_UpdateCommand"   
  17.             Width="308px">  
  18.   
  19.            <%--修改选项模板--%>  
  20.             <EditItemTemplate>   
  21.                 <!--添加“LinkButton2”按钮,并设置ComandName="update"-->  
  22.                 <asp:LinkButton ID="LinkButton2" runat="server" CommandName="update">保存</asp:LinkButton>  
  23.                 <!--添加“LinkButton3”按钮,并设置CommandName="cancel"-->  
  24.                 <asp:LinkButton ID="LinkButton3" runat="server" CommandName="cancel">取消</asp:LinkButton>  
  25.                 <!--数据绑定,绑定字段为学号“studentNo”-->  
  26.                  <%#DataBinder.Eval(Container.DataItem,"studentNo") %>  
  27.                <!--添加“txtGrade”文本框,并绑定字段年级grade-->  
  28.                 <asp:TextBox ID="txtGrade" runat="server"   
  29.                     Text='<%# DataBinder.Eval(Container.DataItem,"grade") %>'></asp:TextBox>  
  30.             </EditItemTemplate>  
  31.               
  32.             <%--表尾模板样式 --%>   
  33.             <FooterStyle Font-Bold="True" Font-Italic="False" Font-Size="18pt" />   
  34.                   
  35.             <%--报头模板样式 --%>  
  36.             <HeaderStyle Font-Bold="True" Font-Size="18pt" />  
  37.               
  38.             <%--数据项模板样式--%>  
  39.             <ItemStyle ForeColor="#000066" />  
  40.              
  41.              <%--报头模板--%>   
  42.             <HeaderTemplate>  
  43.                 模板页眉  
  44.                 <br />   
  45.                 <hr />  
  46.             </HeaderTemplate>  
  47.   
  48.             <%--数据项模板--%>  
  49.             <ItemTemplate>  
  50.                 <!--添加“lBtnShowDetails”按钮,并设置CommandName="select"-->  
  51.                 <asp:LinkButton ID="lBtnShowDetails" runat="server" CommandName="select">查看详细信息</asp:LinkButton>  
  52.                 <!--添加“LinkButton1”按钮-->  
  53.                 <asp:LinkButton ID="LinkButton1" runat="server" CommandName="edit">编辑</asp:LinkButton>  
  54.                 <!--绑定学号studentNo字段-->  
  55.                 <%#DataBinder.Eval(Container.DataItem,"studentNo") %>  
  56.             </ItemTemplate>  
  57.             
  58.            <%--选中项模板--%>  
  59.             <SelectedItemTemplate>  
  60.                 学号:  
  61.                 <!--绑定学号studentNo字段-->  
  62.                <%#DataBinder.Eval(Container.DataItem,"studentNo") %>             
  63.                 <br />   
  64.                 姓名:  
  65.                 <!--绑定姓名studentName字段-->  
  66.                 <%#DataBinder.Eval(Container.DataItem,"studentName") %>  
  67.                 <br />   
  68.                 金额:  
  69.                 <!--绑定金额cash字段-->  
  70.                 <%#DataBinder.Eval(Container.DataItem,"cash") %>  
  71.             </SelectedItemTemplate>  
  72.   
  73.             <%--表尾模板 --%>   
  74.             <FooterTemplate>  
  75.               <hr />  
  76.               <br />  
  77.               模板页脚  
  78.            </FooterTemplate>  
  79.         </asp:DataList>  
  80.     </div>  
  81.     </form>  
  82. </body>  
  83. </html>  

 

效果图:


 

Default.aspx.cs中:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.UI;  
  6. using System.Web.UI.WebControls;  
  7. using System.Data;  
  8. using System.Data.SqlClient;  
  9.   
  10. public partial class _Default : System.Web.UI.Page  
  11. {  
  12.     protected void Page_Load(object sender, EventArgs e)  
  13.     {  
  14.         if (!this.IsPostBack)  
  15.         {  
  16.             this.DataBindToDataList();  
  17.   
  18.         }  
  19.   
  20.     }  
  21.     //用来绑定到DataList控件的方法    
  22.     private void DataBindToDataList()  
  23.     {  
  24.         SqlConnection con = DB.createCon();  
  25.         SqlDataAdapter sda = new SqlDataAdapter();  
  26.         sda.SelectCommand = new SqlCommand("select * from student_Info", con);  
  27.         DataSet ds = new DataSet();  
  28.         sda.Fill(ds, "studentInfo");  
  29.         this.DataList1.DataKeyField = "cardno";  
  30.         this.DataList1.DataSource = ds.Tables["studentInfo"];  
  31.         this.DataList1.DataBind();  
  32.   
  33.     }  
  34.     protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)  
  35.     {  
  36.         if (e.CommandName == "select")  
  37.         {  
  38.             this.DataList1.SelectedIndex = e.Item.ItemIndex;  
  39.             this.DataBindToDataList();       //调用方法DataBindToDataList()  
  40.   
  41.         }  
  42.     }  
  43.     protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)  
  44.     {  
  45.         this.DataList1.EditItemIndex = e.Item.ItemIndex;  
  46.         this.DataBindToDataList();  
  47.   
  48.     }  
  49.     protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e)  
  50.     {  
  51.         this.DataList1.EditItemIndex = -1;  
  52.         this.DataBindToDataList();  
  53.   
  54.     }  
  55.     protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)  
  56.     {  
  57.         string cardNo = this.DataList1.DataKeys[e.Item.ItemIndex].ToString();  
  58.         string grade = ((TextBox)e.Item.FindControl("txtGrade")).Text;  
  59.         SqlConnection con = DB.createCon();  
  60.         SqlCommand cmd = new SqlCommand("update student_Info set grade='" + grade + "' where cardno='" + cardNo + "'", con);  
  61.         con.Open();  
  62.         cmd.ExecuteNonQuery();  
  63.         this.DataList1.EditItemIndex = -1;  
  64.         this.DataBindToDataList();  
  65.   
  66.     }  
  67. }  

运行结果:

页面加载:


 

 点击“查看详细信息”按钮后:

点击“编辑”按钮后:

 

总结:“动手”才是硬道理

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值