本篇文章朋友在深圳游玩的时候突然想到的...近期就有想写几篇关于模板数据的文章,所以回家到之后就奋笔疾书的写出来发布了
1,数据列表DataList与重复列表Repeator很类似,但是DataList应用更广泛,因为他可以选择和修改数据项的内容。
DataList的数据显示和布局与Repeator控件一样都是通过“模板”控制的。
(注:模板最少要定义一个“数据项模板”(ItemTemplate)来指定显示布局)
2,DataList支撑的模板类型:
模板 | 名称 | 说明 |
ItemTemplate | 数据项模板 | 必需的,它定义了数据项及其表现情势 |
AlternatingItemplate | 数据项交替模板 | 为了使相邻的数据项可以有所区别,可以定义交替模板,它使得相邻的数据项看起来显著不同,缺省情况下,他和ItemTemplate模板定义分歧,即却剩下相邻数据无表示区分 |
SeparatorTemplate | 分隔符模板 | 定义数据项之间的分隔符 |
SelectedItemTemplate | 选中项模板 | 定义被选择的数据项的表现内容与布局情势,当未定义“SelectedItemTemplate”模板时,选中项的表现内容与情势无特殊化,由ItemTemplate模板定义所决议 |
EditItemTemplate | 修改选项模板 | 定义即将被修改的数据项的显示内容与布局情势,缺省情况下,修改选项模板就是数据项模板(ItemTemplate)的定义 |
HeaderTemplate | 报头定义模板 | 定义表头变现情势 |
FooterTemplate | 表尾定义模板 |
|
正所谓“学海无涯”。我们正像一群群鱼儿在茫茫的知识之海中跳跃、 嬉戏,在知识之海中出生、成长、生活。我们离不开这维持生活的“海水”,如果跳出这个“海洋”,到“陆地”上去生活,我们就会被无情的“太阳”晒死。
studentNo | studentName | grade | cash |
1 | 韩学杨 | 大一 | 123.000 |
2 | 韩寒 | 大二 | 123.000 |
3 | 韩红 | 大三 | 222.000 |
4 | 韩学敏 | 大四 | 20000.000 |
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>DataList控件训练</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<!--添加控件“DataList1”,并设置属性-->
<asp:DataList ID="DataList1" runat="server" BackColor="LightGoldenrodYellow"
BorderColor="Tan" BorderWidth="1px" CellPadding="2" ForeColor="Black"
oncancelcommand="DataList1_CancelCommand" oneditcommand="DataList1_EditCommand"
onitemcommand="DataList1_ItemCommand" onupdatecommand="DataList1_UpdateCommand"
Width="308px">
<%--修改选项模板--%>
<EditItemTemplate>
<!--添加“LinkButton2”按钮,并设置ComandName="update"-->
<asp:LinkButton ID="LinkButton2" runat="server" CommandName="update">保存</asp:LinkButton>
<!--添加“LinkButton3”按钮,并设置CommandName="cancel"-->
<asp:LinkButton ID="LinkButton3" runat="server" CommandName="cancel">取消</asp:LinkButton>
<!--数据绑定,绑定字段为学号“studentNo”-->
<%#DataBinder.Eval(Container.DataItem,"studentNo") %>
<!--添加“txtGrade”文本框,并绑定字段年级grade-->
<asp:TextBox ID="txtGrade" runat="server"
Text='<%# DataBinder.Eval(Container.DataItem,"grade") %>'></asp:TextBox>
</EditItemTemplate>
<%--表尾模板款式 --%>
<FooterStyle Font-Bold="True" Font-Italic="False" Font-Size="18pt" />
<%--报头模板款式 --%>
<HeaderStyle Font-Bold="True" Font-Size="18pt" />
<%--数据项模板款式--%>
<ItemStyle ForeColor="#000066" />
<%--报头模板--%>
<HeaderTemplate>
模板页眉
<br />
<hr />
</HeaderTemplate>
<%--数据项模板--%>
<ItemTemplate>
<!--添加“lBtnShowDetails”按钮,并设置CommandName="select"-->
<asp:LinkButton ID="lBtnShowDetails" runat="server" CommandName="select">查看详细信息</asp:LinkButton>
<!--添加“LinkButton1”按钮-->
<asp:LinkButton ID="LinkButton1" runat="server" CommandName="edit">编辑</asp:LinkButton>
<!--绑定学号studentNo字段-->
<%#DataBinder.Eval(Container.DataItem,"studentNo") %>
</ItemTemplate>
<%--选中项模板--%>
<SelectedItemTemplate>
学号:
<!--绑定学号studentNo字段-->
<%#DataBinder.Eval(Container.DataItem,"studentNo") %>
<br />
姓名:
<!--绑定姓名studentName字段-->
<%#DataBinder.Eval(Container.DataItem,"studentName") %>
<br />
金额:
<!--绑定金额cash字段-->
<%#DataBinder.Eval(Container.DataItem,"cash") %>
</SelectedItemTemplate>
<%--表尾模板 --%>
<FooterTemplate>
<hr />
<br />
模板页脚
</FooterTemplate>
</asp:DataList>
</div>
</form>
</body>
</html>
效果图:
Default.aspx.cs中:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
this.DataBindToDataList();
}
}
//用来绑定到DataList控件的方法
private void DataBindToDataList()
{
SqlConnection con = DB.createCon();
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = new SqlCommand("select * from student_Info", con);
DataSet ds = new DataSet();
sda.Fill(ds, "studentInfo");
this.DataList1.DataKeyField = "cardno";
this.DataList1.DataSource = ds.Tables["studentInfo"];
this.DataList1.DataBind();
}
protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
if (e.CommandName == "select")
{
this.DataList1.SelectedIndex = e.Item.ItemIndex;
this.DataBindToDataList(); //调用方法DataBindToDataList()
}
}
protected void DataList1_EditCommand(object source, DataListCommandEventArgs e)
{
this.DataList1.EditItemIndex = e.Item.ItemIndex;
this.DataBindToDataList();
}
protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e)
{
this.DataList1.EditItemIndex = -1;
this.DataBindToDataList();
}
protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e)
{
string cardNo = this.DataList1.DataKeys[e.Item.ItemIndex].ToString();
string grade = ((TextBox)e.Item.FindControl("txtGrade")).Text;
SqlConnection con = DB.createCon();
SqlCommand cmd = new SqlCommand("update student_Info set grade='" + grade + "' where cardno='" + cardNo + "'", con);
con.Open();
cmd.ExecuteNonQuery();
this.DataList1.EditItemIndex = -1;
this.DataBindToDataList();
}
}
运行结果:
页面加载:
点击“查看详细信息”按钮后:
点击“编辑”按钮后:
总结:“动手”才是硬道理
文章结束给大家分享下程序员的一些笑话语录: 问答
Q:你是怎么区分一个内向的程序员和一个外向的程序员的? A:外向的程序员会看着你的鞋和你说话时。
Q:为什么程序员不能区分万圣节和圣诞节? A:这是因为 Oct 31 == Dec 25!(八进制的 31==十进制的 25)
--------------------------------- 原创文章 By
模板和数据
---------------------------------