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)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】C#正则表达式小结
- 下一篇: 转载:缓存 Cache