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 = 1 });
                    data.Add(new DataEntry { Name = "Ash", Value = 2 });
                    data.Add(new DataEntry { Name = "Lulu", Value = 3 });
                    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 = -1;
            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; }

    }
}
时间: 2024-10-10 00:58:22

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

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

本系列文章将通过一个简单的实例,结合我自己使用ListView的情况,展示如何用ASP.NET 3.5 ListView控件进行基本的Insert.Edit和Delete操作. 系统要求: Windows XP SP2 or higher VS2008 Beta 2 or Visual Web Developer 2008 Express Edition Beta 2 在本系列的第一篇中,介绍了如何实现ListView的Insert功能.本篇介绍如何实现Edit功能. 实现Edit功能 在Lis

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

摘自:http://blog.ashchan.com/archive/2007/08/28/listview-control-insert-edit-amp-delete-part-1aspx/ ListView是ASP.NET 3.5新提供的一个控件,它支持GridView类似的功能,并将HTML渲染的责任交由使用者来把控,而这正是GridView的一大劣势(它生成的乱七八糟的HTML输出,即使通过CSS Friendly Control Adapters来净化,也还是让人头痛得不行).使用L

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

在做项目时需要使用ListView控件的CheckBoxes属性显示,还要在点击行时自动选中CheckBoxes和点击选中CheckBoxes时自动显示正行选中状态的单选功能. 效果图: 主要利用两个事件:listView1_ItemCheck和listView1_SelectedIndexChanged事件. 上代码: [csharp] view plain copy print? private void listView1_ItemCheck(object sender, ItemChec

Windows程序==&gt;&gt;使用ListView控件展示数据

使用ListView控件展示数据 01.ImageList控件 1.了解了解         属性 说明 Images 储存在图像列表中的所有图像 ImageSize 图像列表中图像的大小 Transparent 被视为透明的颜色 ColorDepth 获取图像列表的颜色深度 Images中图像的存放方式与存放在数组中一样,通过Count属性可以获得Images中图像的个数.每个图像都有一个索引值,从0开始,使用Images[索引值],可以定位到一个图像. ImageList控件所包含的图像可以

【Visual Basic】vb6的ListView控件,对Access2003数据库的增删改查,判断是否有中文、多窗体操作

vb6对Access2003数据库的增删改查并不复杂,可以通过ado对象轻松完成,下面举个小例子,同时说明vb6中的ListView控件的使用.虽然在<[Visual Basic]列表控件ListView的增删改查.模态对话框.禁止窗口调整大小>曾经对VB.NET的ListView控件进行详细的说明,但是证明微软就是个坑爹货,vb6对于ListView实现的代码居然跟VB.NET有着彻底的不同,似乎换了一门语言似得的.改代码什么的最讨厌的. 首先,在vb6生成的工程文件夹中有着一个db1.md

ListView控件绑定DataSet

DataSet数据集,数据缓存在客户端内存中,支持断开式连接. 在对DataSet做操作的时候,首先一定要修改其行的状态,然后执行SqlDataAdapter的Update方法,Update方法根据其行的状态,做相应的SelectCommand.DeleteCommand.UpdateCommand.InsertCommand操作. 一,ListView控件绑定DataSet之操作: 1)查找操作 using (SqlConnection con = new SqlConnection(cons

C# 系统应用之ListView控件 (三).添加ContextMenuStrip右键菜单打开文件和删除文件功能

在前面讲述过使用TreeView控件和ListView控件显示磁盘目录信息,但仅仅是显示信息是不够的,我们还需要具体的操作.在"个人电脑使用历史痕迹"项目中我还需要添加"打开文件"和"删除文件"两种方法.具体如下: 在第一篇文章"C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标"中显示如下: http://blog.csdn.net/eastmount/article/details/1945310

C#如何解决对ListView控件更新以及更新时界面闪烁问题

第一个问题:如何更新ListView控件内容 很多时候运行窗体程序时,由于程序中使用了多线程加之操作不当,所以在对控件操作时会出现下面这样的异常: 这是因为我们在窗体中添加的控件都有属于自己的线程,所以不能从其它线程来访问它. 那要如何解决? 使用委托:MethodInvoker,我用这个挺方便的.下面举一个用例: 1 //调用InitListView(),便可以对ListView控件进行自由更新啦 2 private void InitListView() 3 { 4 MethodInvoke

C#在listview控件中显示数据库数据

一.了解listview控件的属性 view:设置为details columns:设置列 items:设置行 1.将listview的view设置为details 2.设置列属性 点击添加,添加一列 设置一列的Text属性,这就是列名 添加三列 3.编辑items属性,添加一行数据 编辑Text属性,添加一行的第一个数据 编辑subitems属性,添加一行中的其他数据 添加两个数据 填写结果 二.在listview中显示数据库数据 //在listview中显示数据库数据 private voi