ListView控件的Insert、Edit和Delete功能第三部分(自我总结)
1.刚开始在第一部分显示数据的时候出现如下错误:
修改:
@Page 中的EnableEventValidation="false"
2.点击各个按钮没有反应。
修改:为page_load事件加判断是否回发。if (!Page.IsPostBack)
3.ItemPlaceholderID和<asp:PlaceHolder ID="Layout" runat="server"></asp:PlaceHolder>
3. ListViewInsertEventArgs e 中可以通过 var temp = e.Values;可以通过键值来得到value的值。
源代码:
- <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="NX.Manage.WebForm1" EnableEventValidation="false" %>
- <!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>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <asp:listview ID="ListView1" runat="server" ItemPlaceholderID="Layout"
- onitemcommand="ListView1_ItemCommand"
- oniteminserting="ListView1_ItemInserting"
- onitemupdating="ListView1_ItemUpdating" DataKeyNames="Value"
- onitemediting="ListView1_ItemEditing">
- <LayoutTemplate>
- <ul>
- <asp:PlaceHolder ID="Layout" runat="server"></asp:PlaceHolder>
- </ul>
- </LayoutTemplate>
- <ItemTemplate>
- <li><%# Eval("Name") %> (#<%# Eval("Value") %>)</li><asp:Button runat="server" ID="Create" CommandName="Create" Text="New" />
- <asp:Button runat="server" ID="Edit" CommandName="Edit" Text="Edit" />
- </ItemTemplate>
- <EmptyDataTemplate>
- <asp:Button runat="server" ID="Create" CommandName="Create" Text="New" />
- </EmptyDataTemplate>
- <InsertItemTemplate>
- <li>Name: <asp:TextBox runat="server" ID="NewName" Text='<%# Bind("Name") %>' /><br />
- Value: <asp:TextBox runat="server" ID="NewValue" Text='<%# Bind("Value") %>' />
- <asp:Button runat="server" ID="Insert" Text="Save" CommandName="Insert" /> </li><br />
- </InsertItemTemplate>
- <EditItemTemplate>
- <li>Name: <asp:TextBox runat="server" ID="Name" Text='<%# Bind("Name") %>' />
- Value: <asp:TextBox runat="server" ID="Value" Text='<%# Bind("Value") %>' /> <br />
- <asp:Button runat="server" ID="Update" Text="Save" CommandName="Update" />
- </li>
- </EditItemTemplate>
- </asp:listview>
- </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;
- namespace NX.Manage
- {
- public partial class WebForm1 : System.Web.UI.Page
- {
- static readonly string SESSION_KEY = "_sk_dataentry_";
- protected void Page_Load(object sender, EventArgs e)
- {
- if (!Page.IsPostBack)
- {
- ListView1.DataSource = Data;
- ListView1.DataBind();
- }
- }
- protected List<DataEntry> Data
- {
- get
- {
- List<DataEntry> data = Session[SESSION_KEY] as List<DataEntry>;
- if (data == null)
- {
- data = new List<DataEntry>();
- data.Add(new DataEntry { Name = "James", Value = });
- data.Add(new DataEntry { Name = "Ash", Value = });
- data.Add(new DataEntry { Name = "Lulu", Value = });
- ViewState[SESSION_KEY] = data;
- }
- return data;
- }
- set { Session[SESSION_KEY] = value; }
- }
- protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
- {
- if (e.CommandName == "Create")
- {
- ListView1.InsertItemPosition = InsertItemPosition.LastItem;
- BindData();
- }
- }
- private void BindData()
- {
- ListView1.DataSource = Data;
- ListView1.DataBind();
- }
- protected void ListView1_ItemInserting(object sender, ListViewInsertEventArgs e)
- {
- var temp = e.Values;
- ListViewItem item = e.Item;
- try
- {
- string name = (item.FindControl("NewName") as TextBox).Text;
- int value = int.Parse((item.FindControl("NewValue") as TextBox).Text);
- List<DataEntry> data = Data;
- data.Add(new DataEntry { Name = name, Value = value });
- Data = data;
- ListView1.InsertItemPosition = InsertItemPosition.None;
- BindData();
- }
- catch { }
- }
- protected void ListView1_ItemUpdating(object sender, ListViewUpdateEventArgs e)
- {
- var c= e.OldValues;
- var f= e.NewValues;
- int value = int.Parse(ListView1.DataKeys[e.ItemIndex].Value.ToString());
- List<DataEntry> data = Data;
- DataEntry entry = data.Single(d => d.Value == value);
- entry.Name = (ListView1.Items[e.ItemIndex].FindControl("Name") as TextBox).Text;
- entry.Value = int.Parse((ListView1.Items[e.ItemIndex].FindControl("Value") as TextBox).Text);
- Data = data;
- ListView1.EditIndex = -;
- BindData();
- }
- protected void ListView1_ItemEditing(object sender, ListViewEditEventArgs e)
- {
- ListView1.EditIndex = e.NewEditIndex;
- BindData();
- }
- }
- [Serializable]
- public class DataEntry
- {
- public string Name { get; set; }
- public int Value { get; set; }
- }
- }
ListView控件的Insert、Edit和Delete功能第三部分(自我总结)的更多相关文章
- C# winform项目中ListView控件使用CheckBoxes属性实现单选功能
C# winform项目中ListView控件使用CheckBoxes属性实现单选功能 在做项目时需要使用ListView控件的CheckBoxes属性显示,还要在点击行时自动选中CheckBoxes ...
- ListView控件的Insert、Edit和Delete功能(第二部分)
本系列文章将通过一个简单的实例,结合我自己使用ListView的情况,展示如何用ASP.NET 3.5 ListView控件进行基本的Insert.Edit和Delete操作. 系统要求: Windo ...
- ListView控件的Insert、Edit和Delete功能(第一部分)
摘自:http://blog.ashchan.com/archive/2007/08/28/listview-control-insert-edit-amp-delete-part-1aspx/ Li ...
- Windows程序==>>使用ListView控件展示数据
使用ListView控件展示数据 01.ImageList控件 1.了解了解 属性 说明 Images 储存在图像列表中的所有图像 ImageSize 图像列表中图像的大小 Trans ...
- listview控件专题
listview控件加CheckBox 窗口load: listViewLayersName.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderS ...
- 《ASP.NET1200例》ListView 控件与DataPager控件的结合<一>
分页 在前一部分开始时介绍的原 HTML 设计中内含分页和排序,所以根据规范完整实现该网格的任务尚未完成.我们先分页,然后再排序. ListView 控件中的分页通过引入另一个新控件 Data ...
- 《ASP.NET1200例》ListView控件之修改,删除与添加
aspx <body> <form id="form1" runat="server"> <div> <asp:Lis ...
- 《ASP.NET1200例》ListView 控件与DataPager控件的结合<二>
ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示 为什么使用ListView+DataPager的方式实现分页显示? .net提供的诸多数据绑定控件,每一种都有它自己 ...
- SQLite数据库、ListView控件的使用
android下数据库的创建(重点) 在Android平台上,集成了一个轻量级嵌入式关系型数据库—SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本 ...
随机推荐
- 第一百零六节,JavaScript变量作用域及内存
JavaScript变量作用域及内存 学习要点: 1.变量及作用域 2.内存问题 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量是松散型的(不强制类型)本质,决定了它只 ...
- 【1】Chrome - 更换主题
更换 Chrome 主题 参照:百度经验 如何在 Chrome 浏览器设置自己喜欢的皮肤,从而使得浏览器更具有个性和吸引力?下面就一步步教你实现(需要fan墙). 实现的效果如下: 第一步:启动Chr ...
- jquery拖拽效果
<!doctype html><html lang="en"><head> <meta charset="utf-8" ...
- windows网络编程(1)同步套接字
1.socket是应用程序与网络驱动程序的桥梁,在应用程序中创建socket,将数据交付给socket即完成数据传输,剩下的任务由socket和网络驱动程序完成: 2.套接字类型:SOCK_STREA ...
- gdb常用调试命令
一般来说,GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序. 2.可让被调试的程序在你所指定的调置的断点处停住.(断点可以是条件表达式) ...
- 解决yum命令时出现Error: xz compression not available
由于CentOS6的系统安装了epel-release-latest-7.noarch.rpm 导致在使用yum命令时出现Error: xz compression not available问题. ...
- linode digitalocean哪个更好
大多数人纠结的品牌是Linode和DigitalOcean.我有幸使用过两者的产品,从2011年起,我就在用Linode VPS套餐,2013年开始,我订购了一批DigitalOcean产品,下面说下 ...
- ural 1352. Mersenne Primes
1352. Mersenne Primes Time limit: 1.0 secondMemory limit: 64 MB Definition. If the number 2N−1 is pr ...
- ural 1353. Milliard Vasya's Function(dp)
1353. Milliard Vasya's Function Time limit: 1.0 second Memory limit: 64 MB Vasya is the beginning ma ...
- 在cmd模式下对mysql的操作语句
A.window下的语句 1.mysqld -install //安装mysql服务 2.mysqld -remove //卸载mysql服务 3.net start mysql //启动服务 ...