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的值。

源代码:

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="NX.Manage.WebForm1" EnableEventValidation="false" %>
  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></title>
  8. </head>
  9. <body>
  10. <form id="form1" runat="server">
  11. <div>
  12. <asp:listview ID="ListView1" runat="server" ItemPlaceholderID="Layout"
  13. onitemcommand="ListView1_ItemCommand"
  14. oniteminserting="ListView1_ItemInserting"
  15. onitemupdating="ListView1_ItemUpdating" DataKeyNames="Value"
  16. onitemediting="ListView1_ItemEditing">
  17. <LayoutTemplate>
  18. <ul>
  19. <asp:PlaceHolder ID="Layout" runat="server"></asp:PlaceHolder>
  20. </ul>
  21. </LayoutTemplate>
  22. <ItemTemplate>
  23. <li><%# Eval("Name") %> (#<%# Eval("Value") %>)</li><asp:Button runat="server" ID="Create" CommandName="Create" Text="New" />
  24. <asp:Button runat="server" ID="Edit" CommandName="Edit" Text="Edit" />
  25. </ItemTemplate>
  26. <EmptyDataTemplate>
  27. <asp:Button runat="server" ID="Create" CommandName="Create" Text="New" />
  28. </EmptyDataTemplate>
  29. <InsertItemTemplate>
  30. <li>Name: <asp:TextBox runat="server" ID="NewName" Text='<%# Bind("Name") %>' /><br />
  31. Value: <asp:TextBox runat="server" ID="NewValue" Text='<%# Bind("Value") %>' />
  32. <asp:Button runat="server" ID="Insert" Text="Save" CommandName="Insert" /> </li><br />
  33. </InsertItemTemplate>
  34. <EditItemTemplate>
  35. <li>Name: <asp:TextBox runat="server" ID="Name" Text='<%# Bind("Name") %>' />
  36. Value: <asp:TextBox runat="server" ID="Value" Text='<%# Bind("Value") %>' /> <br />
  37. <asp:Button runat="server" ID="Update" Text="Save" CommandName="Update" />
  38. </li>
  39. </EditItemTemplate>
  40. </asp:listview>
  41. </div>
  42. </form>
  43. </body>
  44. </html>

后台代码:

  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.  
  8. namespace NX.Manage
  9. {
  10. public partial class WebForm1 : System.Web.UI.Page
  11. {
  12. static readonly string SESSION_KEY = "_sk_dataentry_";
  13. protected void Page_Load(object sender, EventArgs e)
  14. {
  15. if (!Page.IsPostBack)
  16. {
  17. ListView1.DataSource = Data;
  18. ListView1.DataBind();
  19. }
  20. }
  21. protected List<DataEntry> Data
  22. {
  23. get
  24. {
  25. List<DataEntry> data = Session[SESSION_KEY] as List<DataEntry>;
  26. if (data == null)
  27. {
  28. data = new List<DataEntry>();
  29. data.Add(new DataEntry { Name = "James", Value = });
  30. data.Add(new DataEntry { Name = "Ash", Value = });
  31. data.Add(new DataEntry { Name = "Lulu", Value = });
  32. ViewState[SESSION_KEY] = data;
  33. }
  34.  
  35. return data;
  36. }
  37. set { Session[SESSION_KEY] = value; }
  38. }
  39.  
  40. protected void ListView1_ItemCommand(object sender, ListViewCommandEventArgs e)
  41. {
  42. if (e.CommandName == "Create")
  43. {
  44. ListView1.InsertItemPosition = InsertItemPosition.LastItem;
  45. BindData();
  46. }
  47. }
  48.  
  49. private void BindData()
  50. {
  51. ListView1.DataSource = Data;
  52. ListView1.DataBind();
  53. }
  54.  
  55. protected void ListView1_ItemInserting(object sender, ListViewInsertEventArgs e)
  56. {
  57. var temp = e.Values;
  58. ListViewItem item = e.Item;
  59. try
  60. {
  61. string name = (item.FindControl("NewName") as TextBox).Text;
  62. int value = int.Parse((item.FindControl("NewValue") as TextBox).Text);
  63. List<DataEntry> data = Data;
  64. data.Add(new DataEntry { Name = name, Value = value });
  65. Data = data;
  66.  
  67. ListView1.InsertItemPosition = InsertItemPosition.None;
  68.  
  69. BindData();
  70. }
  71. catch { }
  72. }
  73.  
  74. protected void ListView1_ItemUpdating(object sender, ListViewUpdateEventArgs e)
  75. {
  76. var c= e.OldValues;
  77. var f= e.NewValues;
  78. int value = int.Parse(ListView1.DataKeys[e.ItemIndex].Value.ToString());
  79. List<DataEntry> data = Data;
  80. DataEntry entry = data.Single(d => d.Value == value);
  81. entry.Name = (ListView1.Items[e.ItemIndex].FindControl("Name") as TextBox).Text;
  82. entry.Value = int.Parse((ListView1.Items[e.ItemIndex].FindControl("Value") as TextBox).Text);
  83. Data = data;
  84. ListView1.EditIndex = -;
  85. BindData();
  86.  
  87. }
  88.  
  89. protected void ListView1_ItemEditing(object sender, ListViewEditEventArgs e)
  90. {
  91. ListView1.EditIndex = e.NewEditIndex;
  92. BindData();
  93. }
  94.  
  95. }
  96. [Serializable]
  97. public class DataEntry
  98. {
  99. public string Name { get; set; }
  100. public int Value { get; set; }
  101.  
  102. }
  103. }

ListView控件的Insert、Edit和Delete功能第三部分(自我总结)的更多相关文章

  1. C# winform项目中ListView控件使用CheckBoxes属性实现单选功能

    C# winform项目中ListView控件使用CheckBoxes属性实现单选功能 在做项目时需要使用ListView控件的CheckBoxes属性显示,还要在点击行时自动选中CheckBoxes ...

  2. ListView控件的Insert、Edit和Delete功能(第二部分)

    本系列文章将通过一个简单的实例,结合我自己使用ListView的情况,展示如何用ASP.NET 3.5 ListView控件进行基本的Insert.Edit和Delete操作. 系统要求: Windo ...

  3. ListView控件的Insert、Edit和Delete功能(第一部分)

    摘自:http://blog.ashchan.com/archive/2007/08/28/listview-control-insert-edit-amp-delete-part-1aspx/ Li ...

  4. Windows程序==>>使用ListView控件展示数据

    使用ListView控件展示数据 01.ImageList控件 1.了解了解         属性 说明 Images 储存在图像列表中的所有图像 ImageSize 图像列表中图像的大小 Trans ...

  5. listview控件专题

    listview控件加CheckBox 窗口load: listViewLayersName.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderS ...

  6. 《ASP.NET1200例》ListView 控件与DataPager控件的结合<一>

    分页     在前一部分开始时介绍的原 HTML 设计中内含分页和排序,所以根据规范完整实现该网格的任务尚未完成.我们先分页,然后再排序. ListView 控件中的分页通过引入另一个新控件 Data ...

  7. 《ASP.NET1200例》ListView控件之修改,删除与添加

    aspx <body> <form id="form1" runat="server"> <div> <asp:Lis ...

  8. 《ASP.NET1200例》ListView 控件与DataPager控件的结合<二>

    ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示 为什么使用ListView+DataPager的方式实现分页显示? .net提供的诸多数据绑定控件,每一种都有它自己 ...

  9. SQLite数据库、ListView控件的使用

    android下数据库的创建(重点) 在Android平台上,集成了一个轻量级嵌入式关系型数据库—SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本 ...

随机推荐

  1. 第一百零六节,JavaScript变量作用域及内存

    JavaScript变量作用域及内存 学习要点: 1.变量及作用域 2.内存问题 JavaScript的变量与其他语言的变量有很大区别.JavaScript变量是松散型的(不强制类型)本质,决定了它只 ...

  2. 【1】Chrome - 更换主题

    更换 Chrome 主题 参照:百度经验 如何在 Chrome 浏览器设置自己喜欢的皮肤,从而使得浏览器更具有个性和吸引力?下面就一步步教你实现(需要fan墙). 实现的效果如下: 第一步:启动Chr ...

  3. jquery拖拽效果

    <!doctype html><html lang="en"><head> <meta charset="utf-8" ...

  4. windows网络编程(1)同步套接字

    1.socket是应用程序与网络驱动程序的桥梁,在应用程序中创建socket,将数据交付给socket即完成数据传输,剩下的任务由socket和网络驱动程序完成: 2.套接字类型:SOCK_STREA ...

  5. gdb常用调试命令

    一般来说,GDB主要帮忙你完成下面四个方面的功能: 1.启动你的程序,可以按照你的自定义的要求随心所欲的运行程序.    2.可让被调试的程序在你所指定的调置的断点处停住.(断点可以是条件表达式)   ...

  6. 解决yum命令时出现Error: xz compression not available

    由于CentOS6的系统安装了epel-release-latest-7.noarch.rpm 导致在使用yum命令时出现Error: xz compression not available问题. ...

  7. linode digitalocean哪个更好

    大多数人纠结的品牌是Linode和DigitalOcean.我有幸使用过两者的产品,从2011年起,我就在用Linode VPS套餐,2013年开始,我订购了一批DigitalOcean产品,下面说下 ...

  8. ural 1352. Mersenne Primes

    1352. Mersenne Primes Time limit: 1.0 secondMemory limit: 64 MB Definition. If the number 2N−1 is pr ...

  9. 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 ...

  10. 在cmd模式下对mysql的操作语句

    A.window下的语句 1.mysqld -install     //安装mysql服务 2.mysqld -remove //卸载mysql服务 3.net start mysql //启动服务 ...