日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ListView控件学习系列2-编辑ListView(Edit,Update,Insert,Delete)

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ListView控件学习系列2-编辑ListView(Edit,Update,Insert,Delete) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

目錄:?

ListView控件學習系列1-了解ListView控件

ListView控件學習系列2-編輯ListView

ListView控件學習系列3-ListView選擇,排序,分頁

ListView使用技巧

?

一、編輯,取消,更新操作

首先拖一個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"?/>

?

后臺代碼

?

后臺代碼
public?partial?class?Default3?:?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();
????????}
????}

????
private?void?Bind()
????{
????????ListView1.DataSource?
=?da.List;
????????ListView1.DataBind();
????}

????
protected?void?ListView1_ItemInserting(object?sender,?ListViewInsertEventArgs?e)
????{
????????
int?id?=?Convert.ToInt32(((TextBox)e.Item.FindControl("IDTextBox")).Text);
????????
string?name=?((TextBox)e.Item.FindControl("NameTextBox")).Text;
????????
int?age?=?Convert.ToInt32(((TextBox)e.Item.FindControl("AgeTextBox")).Text);
????????Data.Employee?employee?
=?new?Data.Employee?{?ID?=?id,?Name?=?name,?Age?=?age?};
????????ListView1.InsertItemPosition?
=?InsertItemPosition.None;
????????da.List.Add(employee);
????????Bind();
????}
????
protected?void?Button1_Click(object?sender,?EventArgs?e)
????{
????????ListView1.InsertItemPosition?
=?InsertItemPosition.LastItem;
????????Bind();
????}
????
protected?void?ListView1_ItemCanceling(object?sender,?ListViewCancelEventArgs?e)
????{
????????ListView1.InsertItemPosition?
=?InsertItemPosition.None;
????????Bind();
????}
}

轉載于:https://www.cnblogs.com/nuaalfm/archive/2008/09/02/1281885.html

總結

以上是生活随笔為你收集整理的ListView控件学习系列2-编辑ListView(Edit,Update,Insert,Delete)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。