DataList 用法详解
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DataList.aspx.cs" Inherits="FileUpload自动上传文件.DataList" %> <!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></title> <style type="text/css">
.style1{
width:784px;
}
.style2
{
width:126px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div> <asp:DataList ID ="dataList1" runat ="server" RepeatColumns ="1" GridLines ="Both"
RepeatLayout ="Table" RepeatDirection ="Horizontal"
onitemcommand="dataList1_ItemCommand"
oneditcommand="dataList1_EditCommand"
oncancelcommand="dataList1_CancelCommand"
ondeletecommand="dataList1_DeleteCommand"
onselectedindexchanged="dataList1_SelectedIndexChanged"
onupdatecommand="dataList1_UpdateCommand" DataKeyField ="Id" >
<HeaderTemplate ><%--页眉模版,和Repeater稍微不同,一般每个模版如果用到了table都应该在当前模版闭合,即当前模版用<table></table>包裹,而不是把<table>放在HeaderTemplate</table>放在FooterTemplate闭合,--%>
<table><%--因为如果按照后者做会使得RepeatColumns不生效,RepeatColumns意思的每行显示的项个数,即显示多少个ItemTemplate,一般只会显示一项因为这样每列的标题和每列的内容容易对齐,如果不对齐需要用样式设置每列的宽度使其对齐--%>
<tr class="style1">
<th class="style2">标题1</th>
<th class="style2">标题2</th>
<th class="style2">标题3</th>
<th class="style2">标题4</th>
<th class="style2">时间</th>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table >
<tr class="style1">
<td class="style2"><%#DataBinder.Eval(Container.DataItem,"title1")%></td>
<td class="style2"><%#DataBinder.Eval(Container.DataItem, "title2")%></td>
<td class="style2"><%#DataBinder.Eval(Container.DataItem, "title3")%></td>
<td class="style2"><%#DataBinder.Eval(Container.DataItem, "title4")%></td>
<td class="style2"><%#DateTime.Now.ToString()%></td>
<td class="style2" id ="td">
<ul>
<li><asp:LinkButton id ="LinkButton2" runat ="server" CommandName ="edit" Text ="edit" ></asp:LinkButton></li>
<li><asp:LinkButton id ="LinkButton1" runat ="server" CommandName ="select" Text ="select" ></asp:LinkButton></li>
<li><asp:LinkButton id ="LinkButton3" runat ="server" CommandName ="delete" Text ="删除" ></asp:LinkButton></li>
</ul>
</td>
</tr>
</table>
</ItemTemplate> <SelectedItemTemplate ><%--SelectedItemTemplate一般选中后需要呈现不同的控件才需要使用这个模版,如果只是样式不同只需要设置SelectedItemStyle--%>
<table >
<tr class="style1">
<td class="style2" style="color:Red;"><asp:TextBox ID ="txtTitle1" runat ="server" Text ='<%#DataBinder.Eval(Container.DataItem, "title1")%>'></asp:TextBox></td>
<td class="style2"><asp:TextBox ID ="txtTitle2" runat ="server" Text ='<%#DataBinder.Eval(Container.DataItem, "title2")%>'></asp:TextBox></td>
<td class="style2"><asp:TextBox ID ="txtTitle3" runat ="server" Text ='<%#DataBinder.Eval(Container.DataItem, "title3")%>'></asp:TextBox></td>
<td class="style2"><asp:TextBox ID ="txtTitle4" runat ="server" Text ='<%#DataBinder.Eval(Container.DataItem, "title4")%>'></asp:TextBox></td>
<td class="style2"><%#DateTime.Now.ToString()%></td>
<td class="style2" id ="td">
<ul>
<li><asp:LinkButton id ="Linkcancel" runat ="server" CommandName ="cancelselect" Text ="取消选中" ></asp:LinkButton></li>
</ul>
</td>
</tr>
</table>
</SelectedItemTemplate> <EditItemTemplate ><%--EditItemTemplate一般用于编辑时程序文本框给用户输入--%>
<table >
<tr class="style1">
<td class="style2" style="color:Red;"><asp:TextBox ID ="txtTitle1" runat ="server" Text ='<%#DataBinder.Eval(Container.DataItem, "title1")%>'></asp:TextBox></td>
<td class="style2"><asp:TextBox ID ="txtTitle2" runat ="server" Text ='<%#DataBinder.Eval(Container.DataItem, "title2")%>'></asp:TextBox></td>
<td class="style2"><asp:TextBox ID ="txtTitle3" runat ="server" Text ='<%#DataBinder.Eval(Container.DataItem, "title3")%>'></asp:TextBox></td>
<td class="style2"><asp:TextBox ID ="txtTitle4" runat ="server" Text ='<%#DataBinder.Eval(Container.DataItem, "title4")%>'></asp:TextBox></td>
<td class="style2"><%#DateTime.Now.ToString()%></td>
<td class="style2" id ="td">
<ul>
<li><asp:LinkButton id ="Linkupdate" runat ="server" CommandName ="update" Text ="更新" ></asp:LinkButton></li>
<li><asp:LinkButton id ="Linkcancel" runat ="server" CommandName ="cancel" Text ="取消" ></asp:LinkButton></li>
</ul>
</td>
</tr>
</table>
</EditItemTemplate> <FooterStyle BackColor="#990000" Font-Bold="true" ForeColor="White" />
<AlternatingItemStyle BackColor="White" />
<ItemStyle BackColor="#FFFBD6" ForeColor="#333333" />
<SeparatorStyle BorderStyle="Dashed" />
<SelectedItemStyle BackColor="#FFCC66" Font-Bold="true" ForeColor="Navy" /> <FooterTemplate ></FooterTemplate>
</asp:DataList> </div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data; namespace FileUpload自动上传文件
{
public partial class DataList : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindRptData();
}
} private void BindRptData()
{
DataTable dt = new DataTable();
dt.Columns.Add("Id");
dt.Columns.Add("title1");
dt.Columns.Add("title2");
dt.Columns.Add("title3");
dt.Columns.Add("title4"); for (int i = ; i < ; i++)
{
DataRow row = dt.NewRow();
row["id"] = i;
row["title1"] = "title1" + i;
row["title2"] = "title2" + i;
row["title3"] = "title3" + i;
row["title4"] = "title4" + i;
dt.Rows.Add(row); }
dataList1.DataSource = dt;
dataList1.DataBind();
} protected void dataList1_ItemCommand(object source, DataListCommandEventArgs e)
{
//所有的操作都可以放在这个方法进行,比如编辑,取消,更新,删除都可以放到此处进行,也可以用单独的方法,如dataList1_EditCommand switch (e.CommandName.ToLower())
{
case "select":
//选中控件时如果使用了SelectedItemTemplate需要重新绑定数据,绑定数据可以在此处进行,也可以在dataList1_SelectedIndexChanged进行,若在此处进行需要设置dataList1.SelectedIndex = e.Item.ItemIndex;,因为此时dataList1.SelectedIndex为-1
//dataList1.SelectedIndex = e.Item.ItemIndex;
//BindRptData();
break; //取消操作要根据取消的操作类型做不同动作,如取消选中应该把SelectedIndex设置为-1,取消编辑,应该把EditItemIndex设置为-1,并且设置后都要重新绑定数据
case "cancelselect":
dataList1.SelectedIndex = -;
BindRptData();
break; }
} protected void dataList1_EditCommand(object source, DataListCommandEventArgs e)
{
//datalist编辑需要设置编辑索引,然后重新绑定数据,只要用到EditItemTemplate, SelectedItemTemplate这两个模版点击对应的操作时都要重新绑定数据
dataList1.EditItemIndex = e.Item.ItemIndex;
BindRptData();
} protected void dataList1_CancelCommand(object source, DataListCommandEventArgs e)
{
//这里只对应CommandName 为cancel的动作,每个方法都对应着特定的CommandName,如dataList1_EditCommand对应的CommandName为edit,
//如果有多种取消动作则需要取不同的CommandName放到dataList1_ItemCommand方法去做 dataList1.EditItemIndex = -;
BindRptData(); } protected void dataList1_SelectedIndexChanged(object sender, EventArgs e)
{
BindRptData();
} protected void dataList1_UpdateCommand(object source, DataListCommandEventArgs e)
{
TextBox txtTitle1 = e.Item.FindControl("txtTitle1") as TextBox;
TextBox txtTitle2 = e.Item.FindControl("txtTitle2") as TextBox;
TextBox txtTitle3 = e.Item.FindControl("txtTitle3") as TextBox;
TextBox txtTitle4 = e.Item.FindControl("txtTitle4") as TextBox; /*** 更新到数据库代码
*
*
*
* ***/ //更新后取消编辑状态,重新绑定数据显示到界面
dataList1.EditItemIndex = -;
BindRptData(); } protected void dataList1_DeleteCommand(object source, DataListCommandEventArgs e)
{
//DataKeys 存放的是每行记录的主键,需要设置DataKeyField字段
string id = dataList1.DataKeys[e.Item.ItemIndex].ToString(); //删除当前记录,重新绑定数据
//SqlCommand cmd = new SqlCommand("Delete From Union_User Where ID=" + id, conn);
//cmd.ExecuteNonQuery(); BindRptData();
}
}
}
相关参考资料:
http://halesir.blog.163.com/blog/static/204612069201223174854257/
http://halesir.blog.163.com/blog/static/20461206920122317514384/
http://halesir.blog.163.com/blog/static/20461206920123865357191/
http://blog.csdn.net/ranlianjie/article/details/1618073
DataList 用法详解的更多相关文章
- C#中string.format用法详解
C#中string.format用法详解 本文实例总结了C#中string.format用法.分享给大家供大家参考.具体分析如下: String.Format 方法的几种定义: String.Form ...
- @RequestMapping 用法详解之地址映射
@RequestMapping 用法详解之地址映射 引言: 前段时间项目中用到了RESTful模式来开发程序,但是当用POST.PUT模式提交数据时,发现服务器端接受不到提交的数据(服务器端参数绑定没 ...
- linux管道命令grep命令参数及用法详解---附使用案例|grep
功能说明:查找文件里符合条件的字符串. 语 法:grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>] ...
- mysql中event的用法详解
一.基本概念mysql5.1版本开始引进event概念.event既“时间触发器”,与triggers的事件触发不同,event类似与linux crontab计划任务,用于时间触发.通过单独或调用存 ...
- CSS中伪类及伪元素用法详解
CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的 ...
- c++中vector的用法详解
c++中vector的用法详解 vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间 ...
- AngularJS select中ngOptions用法详解
AngularJS select中ngOptions用法详解 一.用法 ngOption针对不同类型的数据源有不同的用法,主要体现在数组和对象上. 数组: label for value in a ...
- systemctl命令用法详解
systemctl命令用法详解系统环境:Fedora 16binpath:/bin/systemctlpackage:systemd-units systemctl enable httpd.serv ...
- CSS3的@keyframes用法详解:
CSS3的@keyframes用法详解:此属性与animation属性是密切相关的,关于animation属性可以参阅CSS3的animation属性用法详解一章节. 一.基本知识:keyframes ...
随机推荐
- Struts2 日期类型转换
针对日期类java.util.Date进行类型转换,要求客户端使用"yyyy-MM-dd","yyyy/MM/dd"中的任意一种输入,并以"yyyy- ...
- winform对话框控件、打印控件
对话框控件: ColorDialog:颜色选择对话框,让用户自行选择一种颜色,使用方法类似FontDialog FontDialog:字体选择对话框,让用户自行选择一种字体(也可以选择字体颜色,需要在 ...
- ListView列表的简单案例
在android开发中ListView它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示.抽空把对ListView的使用做了整理,并写了个小例子 列表示例图: BaseActivity pa ...
- VB将JSON映射到表格实现解析
现在抓取网页数据的时候,经常会遇到JSON的数据,相对于繁杂无标签名的HTML源,用JSON传回的数据比较直观好看点.但是从其中提炼数据也让人觉得很烦躁,基本上就是不断的查找,截取,或者组装成JS代码 ...
- SRM 618 DIV1 500
非常棒的组合问题,看了好一会,无想法.... 有很多做法,我发现不考虑顺序的最好理解,也最好写. 结果一定是两种形式 A....A dp[n-1] A...A...A sgma(dp[j]*dp[ ...
- 【DP】HDU 1087
HDU 1078 Super Jumping! Jumping! Jumping! 题意: 有这么个游戏,从start到end(自己决定在哪停下来)连续跳圈,中间不能空一个圈不跳,圈里的数字必须比你上 ...
- 利用box-shadow绘图
上篇博客提到过,box-shadow属性的本质是对形状的复制,那么如果我设置一个1*1px的i标签,利用box-shadow可以叠加的特性,给每一个1*1px的阴影赋上颜色,那么最后不就是一幅图片了么 ...
- Delphi XE6 原生解析json
Delphi XE5带了system.json单元,原生提供了json支持类.下面是解析json用法说明: 最简单的JSON大致像这样 { "date":"周二(今天, ...
- FastJson和AsyncHttpCLient
Android的展示数据,除了上章所讲的本地存储外,大部分数据都来自于网络.首先介绍一下Android APP开发常见的网络操作方式.从网络层面上有底层的tcp/ip,也就是我们常见的socket套接 ...
- GIT 操作
1. 查看某个文件某次提交修改的内容 git show commitid a.txt 2. git rm 和 git rm --cached 当我们需要删除暂存区或分支上的文件, 同时工作区也不 ...