关于Datalist,其实和Repeater差不多,都是存放数据的控件,相比较下,Datalist和Repeater虽然都是用的模板,但是Datalist比之多了Edit模板,也就是编辑栏的模板,事件中也多了Edit,Update,Cancel以及Delete,可以说更加智能,更全面了,但是也有很多的不方便,不够灵活,复杂程度高。

下面就用联系人管理来详细说一下 Datalist的用法:

联系人管理要求:实现对联系人的增删改查。

    ① 当点击编辑时,编辑模板会覆盖原来的模板,而不会跳转页面。点击更新后,原来的模板重新覆盖掉编辑模板。点击取消,打回到原来的模板。总之就是不会跳转页面

②当点击"添加新人员"时,会在当前页面出现增加人员编辑栏原"添加新人员"按钮隐藏掉,当输入好人物信息后,点击添加。  增加人物编辑栏消失掉,原"添加新人员"按钮出现,并且"添加新人员"按钮要随着联系人列表高度的增长而相对下移。注意要在增加人物编辑栏加上非空验证,非空验证请注意分组!!!
    ③当点击删除时,弹出对话框"是否确认删除?"

   

  

   下面是代码:  在这里数据库有两个表,其中一个表是联系人列表,一个表是分组列表。主外键关系。

分组隐藏的是分组编号,显示的是分组名称。  为了获取点击编辑后 下拉列表首先选中的值,这里加了一个隐藏域用来存储分组的ID

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
DataList1.DataSource = new ContactsBF().Select();
DataList1.DataBind();
DropDownList2.DataSource = new ContactsBF().SelectGroup(); //下拉列表要显示的值
DropDownList2.DataTextField = "Name";
DropDownList2.DataValueField = "id";
DropDownList2.DataBind();
}
} protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e) //在数据被绑定时激发 (实现多表联合查询,通过编号显示名字)
{
if (e.Item.ItemType == ListItemType.EditItem) //判断一下是不是编辑项的模板
{
if (e.Item.ItemIndex > -) //从身体开始,不从表头开始,因为表头的索引为-1
{
//找到隐藏域的值
HtmlInputHidden lt = (HtmlInputHidden)e.Item.FindControl("Hidden1");
//找到下拉列表
DropDownList dp = (DropDownList)e.Item.FindControl("DropDownList1");
//为下拉列表赋值
List<Groups> list = new ContactsBF().SelectGroup();
dp.DataSource = list;
dp.DataTextField = "Name";
dp.DataValueField = "id";
dp.SelectedValue = lt.Value;
dp.DataBind();
}
}
else
{
if (e.Item.ItemIndex > -)
{
Literal lt = (Literal)e.Item.FindControl("Literal1"); //找到这个控件
//写方法查询名字
string GroupName = new ContactsBF().ToName(Convert.ToInt32(lt.Text));// 显示名字
lt.Text = GroupName; //重新赋值
LinkButton a = (LinkButton)e.Item.FindControl("LinkButton2");
a.Attributes.Add("onclick", "return confirm(\"是否确认删除?\")"
); }
}
}
protected void DataList1_EditCommand(object source, DataListCommandEventArgs e) //当点击编辑按钮的时候,Item模版替换为Edit模板
{
DataList1.EditItemIndex= e.Item.ItemIndex; //获取每列的索引,替换为Edit模板
//重新绑定
DataList1.DataSource = new ContactsBF().Select();
DataList1.DataBind();

}
protected void DataList1_UpdateCommand(object source, DataListCommandEventArgs e) //点击更新按钮时触发
{
if (e.Item.ItemIndex > -)
{ //找到隐藏域的值,隐藏的值是主键,要通过主键修改
HtmlInputHidden lt = (HtmlInputHidden)e.Item.FindControl("Hidden2");
//首先先获取到文本框以及下拉列表的值
TextBox txt1 = (TextBox)e.Item.FindControl("TextBox1");
TextBox txt2 = (TextBox)e.Item.FindControl("TextBox2");
DropDownList dp = (DropDownList)e.Item.FindControl("DropDownList1");
new ContactsBF().Update(Convert.ToInt32(lt.Value), txt1.Text, txt2.Text, (dp.SelectedIndex+));
//修改完毕,要打回到原来的页面
Response.Redirect("Default.aspx");
}
}
protected void DataList1_CancelCommand(object source, DataListCommandEventArgs e)//取消
{
//直接打回到原来的界面
Response.Redirect("Default.aspx");
}
protected void DataList1_DeleteCommand(object source, DataListCommandEventArgs e) //删除
{
if(e.Item.ItemIndex>-)
{
HtmlInputHidden lt = (HtmlInputHidden)e.Item.FindControl("Hidden3");
new ContactsBF().Delete(Convert.ToInt32(lt.Value));
Response.Redirect("Default.aspx");
}
} protected void Button2_Click(object sender, EventArgs e) //当点击添加的时候
{
string name = TextBox3.Text;
string tel = TextBox4.Text;
int groupid = DropDownList2.SelectedIndex;
new ContactsBF().Insert(name,tel,groupid+);
Response.Redirect("Default.aspx");
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<style>
.aa
{
position:relative;
top:10px;
left:245px;
width:420px;
height:100px; }
.bb
{
position:relative;
top:10px;
left:245px;
width:420px;
height:0px; }
</style>
<body>
<form id="form1" runat="server">
<div >
<center><h1>联系人管理</h1>
<%--一旦生成DataList 就是生成了一个N行1列的表格--%>
<asp:DataList ID="DataList1" runat="server" OnItemDataBound="DataList1_ItemDataBound" OnEditCommand="DataList1_EditCommand" OnUpdateCommand="DataList1_UpdateCommand" OnCancelCommand="DataList1_CancelCommand" OnDeleteCommand="DataList1_DeleteCommand">
<HeaderTemplate>
<table width="860px" border="" cellpadding="" cellspacing="">
<tr>
<td width="200px">姓名</td>
<td width="200px">电话</td>
<td width="300px">分组</td>
<td>操作</td>
</tr>
</table>
</HeaderTemplate>
<ItemTemplate>
<table width="860px" >
<tr>
<td width="200px"><input id="Hidden3" type="hidden" runat="server" value='<%#Eval("id") %>'/><%#Eval("Name") %></td>
<td width="200px"><%#Eval("Tel") %></td>
<td width="300px"><asp:Literal ID="Literal1" runat="server" Text='<%#Eval("GroupId") %>'></asp:Literal></td>
<td><asp:LinkButton ID="LinkButton1" runat="server" CommandName="Edit">编辑</asp:LinkButton>&nbsp;&nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CommandName="Delete" >删除</asp:LinkButton></td>
</tr>
</table>
</ItemTemplate>
<FooterTemplate></FooterTemplate> <%-- 编辑栏!!!--%>
<EditItemTemplate>
<table width="860px" >
<tr>
<td width="200px"><br/><input id="Hidden2" type="hidden" runat="server" value='<%#Eval("id") %>'/><asp:TextBox ID="TextBox1" runat="server" Text='<%#Eval("Name") %>'></asp:TextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="名字不能为空" ControlToValidate="TextBox1"></asp:RequiredFieldValidator></td>
<td width="200px"><asp:TextBox ID="TextBox2" runat="server" Text='<%#Eval("Tel") %>'></asp:TextBox></td>
<td width="300px"><input id="Hidden1" type="hidden" runat="server" value='<%#Eval("GroupId") %>'/><asp:DropDownList ID="DropDownList1" runat="server" ></asp:DropDownList></td>
<td><asp:LinkButton ID="LinkButton1" runat="server" CommandName="Update">更新</asp:LinkButton>&nbsp;&nbsp;<asp:LinkButton ID="LinkButton2" runat="server" CommandName="Cancel">取消</asp:LinkButton></td>
</tr>
</table>
</EditItemTemplate> <%--编辑项模板--%>
</asp:DataList></center>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<div class="bb" id="div2">
<input id="Button1" type="button" value="添加新人员" onclick="xianshi()" />
</div>
</div>
<div class="aa" id="div1" style="visibility:hidden" >
姓名:<asp:TextBox ID="TextBox3" runat="server" ValidationGroup="aa"></asp:TextBox><asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ErrorMessage="姓名不能为空" ControlToValidate="TextBox3" ValidationGroup="aa"></asp:RequiredFieldValidator><br/>
电话:<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox><br />
分组:<asp:DropDownList ID="DropDownList2" runat="server" ></asp:DropDownList><br/>
<asp:Button ID="Button2" runat="server" Text="添加" OnClick="Button2_Click" ValidationGroup="aa" />
</div>
</form>
</body>
</html>
<script src="Script/jquery-1.11.2.min.js"></script>
<script>
function xianshi()
{
var a = document.getElementById("div1"); //获取到这个对象
//下面给这个对象移除属性
a.removeAttribute("style");
var b = document.getElementById("div2");
//下面给这个对象添加属性
b.setAttribute("style", "visibility:hidden");
}
</script>

    

Datalist增删改查——联系人管理的更多相关文章

  1. 使用vue+elementUI+springboot创建基础后台增删改查的管理页面--(1)

    目前这家公司前端用的是vue框架,由于在之前的公司很少涉及到前端内容,对其的了解也只是会使用js和jquery,所以..慢慢来吧. 在此之前需要先了解vue的大致语法和规则,可先前往官方文档进行学习h ...

  2. 【转载】ASP.NET MVC Web API 学习笔记---联系人增删改查

    本章节简单介绍一下使用ASP.NET MVC Web API 做增删改查.目前很多Http服务还是通过REST或者类似RESP的模型来进行数据操作的.下面我们通过创建一个简单的Web API来管理联系 ...

  3. ASP.NET MVC Web API 学习笔记---联系人增删改查

    本章节简单介绍一下使用ASP.NET MVC Web API 做增删改查. 目前很多Http服务还是通过REST或者类似RESP的模型来进行数据操作的. 下面我们通过创建一个简单的Web API来管理 ...

  4. Java项目——模拟电话薄联系人增删改查

    该项目模拟了电话本记录联系人的业务功能,用来练习对数据库的增删改查等操作. 菜单类:Menu -- 用来封装主菜单和个选项的子菜单 Person类: Person--联系人的实体类 TelNoteRe ...

  5. 数据库开发基础-SQl Server 控制数据库的服务+数据库的创建与管理(增删改查)

    控制数据库的服务: 方法一: 1.Windows+R 打开运行  打开cmd 2.输入net start MSSQLserver 启动数据库服务 输入net stop MSSQLserver 关闭数据 ...

  6. IOS9中联系人对象的使用及增删改查操作的函数封装

    之前克服重重困难把IOS9中新的类联系人搞明白了,现在把增删改查封装成了函数,如下: // // ViewController.m // IOS9中联系人CNContact的使用 // // Crea ...

  7. Struts2+Spring+Hibernate实现员工管理增删改查功能(一)之ssh框架整合

    前言        转载请标明出处:http://www.cnblogs.com/smfx1314/p/7795837.html 本项目是我写的一个练习,目的是回顾ssh框架的整合以及使用.项目介绍: ...

  8. 第二百七十六节,MySQL数据库,【显示、创建、选定、删除数据库】,【用户管理、对用户增删改查以及授权】

    MySQL数据库,[显示.创建.选定.删除数据库],[用户管理.对用户增删改查以及授权] 1.显示数据库 SHOW DATABASES;显示数据库 SHOW DATABASES; mysql - 用户 ...

  9. 论坛模块_版块管理_增删改查&实现上下移动

    论坛模块_版块管理1_增删改查 设计实体Forum.java public class Forum { private Long id; private String name; private St ...

随机推荐

  1. APACHE支持.htaccess以及 No input file specified解决方案

    在你的Apache安装文件夹conf里找到httpd.conf文件 搜索LoadModule rewrite_module modules/mod_rewrite.so 如果前面有注释符号#,请去掉. ...

  2. 代码分享:php判断数组是否有序

    发布:脚本学堂/PHP编程  编辑:JB02   2013-12-17 14:59:02  [大 中 小] 转自:http://www.jbxue.com/article/14723.html如何判断 ...

  3. delphi调用 java 的 WebService服务端.

    // InvRegistry.RegisterInvokeOptions(TypeInfo(ModelADServicePortType), ioLiteral); InvRegistry.Regis ...

  4. WebForm页面运行周期--页面关系

    1.前台文件类继承于后台文件类 2.当前台文件中包含某个标签runat= server的时候,asp.net就会在编译这个页面前后台文件类的时候,在后台类中添加一个相应的控件对象:当页面被访问,也就是 ...

  5. General Palindromic Number (进制)

    A number that will be the same when it is written forwards or backwards is known as a Palindromic Nu ...

  6. 简易记事本(演示java文件io)

      演示效果:  打开txt文件 输入文字,保存 选择保存地址 生成文件 源代码: package io; import java.io.*; import java.awt.*; import ja ...

  7. 【BZOJ 1497】 [NOI2006]最大获利

    Description 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU集团旗下的CS&T通讯公司在新一代通讯技术血战的前夜,需要做太多的准备工作,仅就站址选择一 ...

  8. EF当实体模型与数据库的架构不同时要删除数据库时的报错问题

    当使用的EF的时候,我们都知道EF当实体模型与数据库的架构不同时要删除数据库,这是会把错: 无法创建与 'master' 数据库之间的连接,这是因为已打开原始数据库连接,并且已从连接字符串中删除凭据. ...

  9. 1018: [SHOI2008]堵塞的交通traffic - BZOJ

    Description 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一 ...

  10. java对象数组

    问题描述:     java 对象数组的使用 问题解决: 数组元素可以是任何类型(只要所有元素具有相同的类型) 数组元素可以是基本数据类型 数组元素也可以是类对象,称这样的数组为对象数组.在这种情况下 ...