zoukankan      html  css  js  c++  java
  • 编辑ListView(Edit,Update,Inse

    一、编辑,取消,更新操作

    首先拖一个ListView控件到页面,然后按如下代码进行调整,这里为了利用ListView控件中按钮的内置功能CommandName必须和我们这里的名字一样

    前端代码

    <asp:ListView ID="ListView1" runat="server" OnItemEditing="ListView1_ItemEditing"
    
    OnItemCanceling="ListView1_ItemCanceling" OnItemUpdating="ListView1_ItemUpdating">
    
    <ItemTemplate>
    
    <tr>
    
    <td>
    
    <%#Eval("ID") %>
    
    </td>
    
    <td>
    
    <%#Eval("name") %>
    
    </td>
    
    <td>
    
    <asp:Button ID="EditButton" runat="server" Text="Edit" CommandName="Edit" />
    
    </td>
    
    </tr>
    
    </ItemTemplate>
    
    <EditItemTemplate>
    
    <tr>
    
    <td>
    
    <asp:Label ID="IDLable" runat="server" Text='<%#Eval("ID") %>' />
    
    </td>
    
    <td>
    
    <asp:TextBox ID="NameTextBox" runat="server" Text='<%#Bind("Name") %>' />
    
    </td>
    
    <td>
    
    <asp:Button ID="UpdateButton" runat="server" CommandName="Update" Text="Update" />
    
    <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="Cancel" />
    
    </td>
    
    </tr>
    
    </EditItemTemplate>
    
    <LayoutTemplate>
    
    <table>
    
    <tr runat="server" id="itemPlaceholder">
    
    </tr>
    
    </table>
    
    </LayoutTemplate>
    
    </asp:ListView>

    这里我们在App_Code文件夹中添加DataAccess类来模拟数据提供,代码如下:

    模拟数据提供代码

    public class DataAccess
    
    {
    
    public List<Employee> List;
    
    public DataAccess()
    
    {
    
    List = new List<Employee>();
    
    Employee e1 = new Employee {ID=1, Name = "lfm1", Age = 30 };
    
    Employee e2 = new Employee {ID=2, Name = "lfm2", Age = 30 };
    
    Employee e3 = new Employee {ID=3, Name = "lfm3", Age = 30 };
    
    Employee e4 = new Employee {ID=4, Name = "lfm4", Age = 30 };
    
    Employee e5 = new Employee {ID=5, Name = "lfm5", Age = 30 };
    
    Employee e6 = new Employee {ID=6, Name = "lfm6", Age = 30 };
    
    List.Add(e1);
    
    List.Add(e2);
    
    List.Add(e3);
    
    List.Add(e4);
    
    List.Add(e5);
    
    List.Add(e6);
    
    }
    
    }
    
    public class Employee
    
    {
    
    public int ID { get; set; }
    
    public string Name { get; set; }
    
    public int Age { get; set; }
    
    public int Sex { get; set; }
    
    }

    页面的后台代码如下:

    页面后台代码

    public partial class _Default : System.Web.UI.Page
    
    {
    
    DataAccess da = new DataAccess();
    
    protected void Page_Load(object sender, EventArgs e)
    
    {
    
    if (!IsPostBack)
    
    {
    
    Bind();
    
    }
    
    }
    
    private void Bind()
    
    {
    
    ListView1.DataSource = da.List;
    
    ListView1.DataBind();
    
    }
    
    protected void ListView1_ItemEditing(object sender, ListViewEditEventArgs e)
    
    {
    
    ListView1.EditIndex = e.NewEditIndex;
    
    Bind();
    
    }
    
    protected void ListView1_ItemUpdating(object sender, ListViewUpdateEventArgs e)
    
    {
    
    foreach (var item in da.List)
    
    {
    
    if (item.ID.ToString() == ((Label)ListView1.Items[e.ItemIndex].FindControl("IDLable")).Text)
    
    {
    
    item.Name = ((TextBox)ListView1.Items[e.ItemIndex].FindControl("NameTextBox")).Text;
    
    }
    
    }
    
    ListView1.EditIndex = -1;
    
    Bind();
    
    }
    
    protected void ListView1_ItemCanceling(object sender, ListViewCancelEventArgs e)
    
    {
    
    ListView1.EditIndex = -1;
    
    Bind();
    
    }
    
    }

    这里需要注意在Page_Load中绑定时必须判断是否是回发,如果是回发状态则不能重新绑定,因为如果重新绑定则相应的事件不会被触发

    二、删除操作

    前端代码

    前端代码

    <asp:ListView ID="ListView1" runat="server" OnItemDeleting="ListView1_ItemDeleting">
    
    <ItemTemplate>
    
    <tr>
    
    <td>
    
    <asp:Label ID="IDLable" runat="server" Text='<%#Eval("ID") %>' />
    
    </td>
    
    <td>
    
    <%#Eval("name") %>
    
    </td>
    
    <td>
    
    <asp:Button ID="EditButton" runat="server" Text="Edit" CommandName="Edit" />
    
    </td>
    
    <td>
    
    <asp:Button ID="DeleteButton" runat="server" Text="Delete" CommandName="Delete" />
    
    </td>
    
    </tr>
    
    </ItemTemplate>
    
    <LayoutTemplate>
    
    <table>
    
    <tr runat="server" id="itemPlaceholder">
    
    </tr>
    
    </table>
    
    </LayoutTemplate>
    
    </asp:ListView>
    
     

    因为这里是模拟数据提供,所以数据的状态我们暂且用Session保存,后台代码如下:

    后台代码

    public partial class _Default : System.Web.UI.Page
    
    {
    
    DataAccess da;
    
    protected void Page_Load(object sender, EventArgs e)
    
    {
    
    if (Session["da"] == null)
    
    {
    
    da = new DataAccess();
    
    Session["da"] = da;
    
    }
    
    else
    
    {
    
    da = Session["da"] as DataAccess;
    
    }
    
    if (!IsPostBack)
    
    {
    
    Bind();
    
    }
    
    }
    
    protected void ListView1_ItemDeleting(object sender, ListViewDeleteEventArgs e)
    
    {
    
    foreach (var item in da.List)
    
    {
    
    string currentID = ((Label)ListView1.Items[e.ItemIndex].FindControl("IDLable")).Text;
    
    if (item.ID.ToString() == currentID)
    
    {
    
    da.List.Remove(item);
    
    break;
    
    }
    
    }
    
    Bind();
    
    }
    
    }

    三、插入操作

    ListView的Insert Mode通过其属性InsertItemPosition来控制,该属性的取值有三种:

    None:非Insert状态

    FirstItem:Insert状态,且编辑模板显示于ListView所有item的最前面

    LastItem :Insert状态,且编辑模板显示于ListView所有item的最后面

    前端代码:

    <asp:ListView ID="ListView1" runat="server" OnItemInserting="ListView1_ItemInserting">
    
    <LayoutTemplate>
    
    <table id="Table1" runat="server" border="0" style="">
    
    <tr runat="server" id="itemPlaceholder" />
    
    </table>
    
    </LayoutTemplate>
    
    <ItemTemplate>
    
    <tr>
    
    <td>
    
    <%#Eval("ID") %>
    
    </td>
    
    <td>
    
    <asp:Label ID="idLabel" runat="server" Text='<%# Eval("name") %>' />
    
    </td>
    
    <td>
    
    <asp:Label ID="xLabel" runat="server" Text='<%# Eval("age") %>' />
    
    </td>
    
    </tr>
    
    </ItemTemplate>
    
    <InsertItemTemplate>
    
    <tr style="">
    
    <td>
    
    <asp:Button ID="InsertButton" runat="server" CommandName="Insert" Text="插入" />
    
    <asp:Button ID="CancelButton" runat="server" CommandName="Cancel" Text="清除" />
    
    </td>
    
    <td>
    
    <asp:TextBox ID="IDTextBox" runat="server" />
    
    </td>
    
    <td>
    
    <asp:TextBox ID="NameTextBox" runat="server" />
    
    </td>
    
    <td>
    
    <asp:TextBox ID="AgeTextBox" runat="server" />
    
    </td>
    
    </tr>
    
    </InsertItemTemplate>
    
    </asp:ListView>
    
    <asp:Button ID="Button1" runat="server" Text="插入" OnClick="Button1_Click" />

    原文出处:吾吾织梦WwW.55ZM.CoM

  • 相关阅读:
    C# 复制文件夹,移动文件夹
    让Base64适合在URL中使用
    修复FIREBIRD数据库
    Image.FromFile 锁文件的解决办法
    Powerbuilder 12.5 下载地址
    C# 给程序添加许可
    WIN FORM 多线程更新UI(界面控件)
    .Net WinForm 拖动控件
    SQL Server 自动增长清零
    C# 一次生成多个相同的字符
  • 原文地址:https://www.cnblogs.com/feb9903/p/3682011.html
Copyright © 2011-2022 走看看