关于ListView的一些数据操作!(第2天)
用惯了GridView,DataList,今天学习了关于ListView的操作,在此做一个备忘!
首先是ListView的模板机制
<LayoutTemplate>是用来标记表格的标题列;
<ItemTemplate>是用来显示数据的;
<EditItemTemplate>是用来进行数据编辑的才显示的;
<InsertItemTemplate>是用来插入数据时才显示的;
以下是前台代码的具体实现:
Code
<asp:ListView ID="ListView1" runat="server"
onitemcanceling="ListView1_ItemCanceling"
oniteminserting="ListView1_ItemInserting" DataKeyNames="ID"
onitemdeleting="ListView1_ItemDeleting"
onitemediting="ListView1_ItemEditing" onitemupdating="ListView1_ItemUpdating">
<LayoutTemplate>
<table id="Table1" runat="server" border="0" style="">
<tr>
<td>ID</td>
<td>用户名</td>
<td>密码</td>
<td>操作</td>
</tr>
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("ID") %></td>
<td><%#Eval("Username") %></td>
<td><%#Eval("Password") %></td>
<td>
<asp:Button ID="btnEdit" CommandName="Edit" runat="server" Text="编辑" />
<asp:Button ID="btnDelete" CommandName="Delete" OnClientClick='return confirm("sss")' runat="server" Text="删除" /></td>
</tr>
</ItemTemplate>
<EditItemTemplate>
<tr>
<td>
<%#Eval("ID") %>
</td>
<td>
<asp:TextBox ID="tbUsername" Text='<%#Bind("Username") %>' runat="server"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="tbPassword" Text='<%#Bind("Password") %>' runat="server"></asp:TextBox>
</td>
<td>
<asp:Button ID="btnUpdate" CommandName="Update" runat="server" Text="保存" />
<asp:Button ID="btnCancel" CommandName="Cancel" runat="server" Text="取消" />
</td>
</tr>
</EditItemTemplate>
<InsertItemTemplate>
<tr>
<td>
请输入
</td>
<td>
<asp:TextBox ID="tbUsername" runat="server"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="tbPassword" runat="server"></asp:TextBox>
</td>
<td>
<asp:Button ID="btnInsert" CommandName="Insert" runat="server" Text="保存" />
<asp:Button ID="btnCancel" CommandName="Cancel" runat="server" Text="取消" />
</td>
</tr>
</InsertItemTemplate>
</asp:ListView>
<br />
<asp:Button ID="btnAdd" runat="server" onclick="Button1_Click" Text="添加" />
<asp:ListView ID="ListView1" runat="server"
onitemcanceling="ListView1_ItemCanceling"
oniteminserting="ListView1_ItemInserting" DataKeyNames="ID"
onitemdeleting="ListView1_ItemDeleting"
onitemediting="ListView1_ItemEditing" onitemupdating="ListView1_ItemUpdating">
<LayoutTemplate>
<table id="Table1" runat="server" border="0" style="">
<tr>
<td>ID</td>
<td>用户名</td>
<td>密码</td>
<td>操作</td>
</tr>
<tr runat="server" id="itemPlaceholder" />
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%#Eval("ID") %></td>
<td><%#Eval("Username") %></td>
<td><%#Eval("Password") %></td>
<td>
<asp:Button ID="btnEdit" CommandName="Edit" runat="server" Text="编辑" />
<asp:Button ID="btnDelete" CommandName="Delete" OnClientClick='return confirm("sss")' runat="server" Text="删除" /></td>
</tr>
</ItemTemplate>
<EditItemTemplate>
<tr>
<td>
<%#Eval("ID") %>
</td>
<td>
<asp:TextBox ID="tbUsername" Text='<%#Bind("Username") %>' runat="server"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="tbPassword" Text='<%#Bind("Password") %>' runat="server"></asp:TextBox>
</td>
<td>
<asp:Button ID="btnUpdate" CommandName="Update" runat="server" Text="保存" />
<asp:Button ID="btnCancel" CommandName="Cancel" runat="server" Text="取消" />
</td>
</tr>
</EditItemTemplate>
<InsertItemTemplate>
<tr>
<td>
请输入
</td>
<td>
<asp:TextBox ID="tbUsername" runat="server"></asp:TextBox>
</td>
<td>
<asp:TextBox ID="tbPassword" runat="server"></asp:TextBox>
</td>
<td>
<asp:Button ID="btnInsert" CommandName="Insert" runat="server" Text="保存" />
<asp:Button ID="btnCancel" CommandName="Cancel" runat="server" Text="取消" />
</td>
</tr>
</InsertItemTemplate>
</asp:ListView>
<br />
<asp:Button ID="btnAdd" runat="server" onclick="Button1_Click" Text="添加" />
下面的后台的代码分析:
1、首先先要做的就是进行数据库连接操作,这里采用LINQ,
直接在App_Date的里面创建数据库(第一次遇到,以前都是在进入SQL SERVER2005里面进行操作)
2、其次,新建Models的文件夹,新建 LINQ to SQL 类。
然后直接将数据库拖入到该文件中,他将自动生成数据库操作类(非常方便快捷!)。
3、下面是代码部分:
Code
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
Bind();
}
TestDataContext tdc = new TestDataContext();//创建Linq的数据操作类
/// <summary>
/// 数据库绑定操作
/// </summary>
private void Bind()
{
ListView1.DataSource = tdc.Test;//tdc.text是获取数据库的表
ListView1.DataBind();// ListView的数据绑定
}
protected void Button1_Click(object sender, EventArgs e)
{
ListView1.InsertItemPosition = InsertItemPosition.LastItem;//InsertItemPosition.LastItem的意思是显示插入的位置是在表格的最后一列
Bind();
}
protected void ListView1_ItemCanceling(object sender, ListViewCancelEventArgs e)
{
ListView1.InsertItemPosition = InsertItemPosition.None;//InsertItemPosition.None的意思是不显示插入或修改的显示
ListView1.EditIndex = -1;//为-1则取消
Bind();
}
/// <summary>
/// 插入操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ListView1_ItemInserting(object sender, ListViewInsertEventArgs e)
{
string username = ((TextBox)e.Item.FindControl("tbUsername")).Text;//将tbUsername的值付给username
string password = ((TextBox)e.Item.FindControl("tbPassword")).Text;//同理
Test.Models.Test test = new Test.Models.Test();//将数据库的操作类实体化 Test(命名空间)Models(文件名)Test(LINQ to SQL 类)
test.Username = username;
test.Password = password;
tdc.Test.InsertOnSubmit(test);//InsertOnSubmit插入操作
tdc.SubmitChanges();//执行更新
ListView1.InsertItemPosition = InsertItemPosition.None;
Bind();
}
/// <summary>
/// 删除操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ListView1_ItemDeleting(object sender, ListViewDeleteEventArgs e)
{
int id = Convert.ToInt32(ListView1.DataKeys[e.ItemIndex].Value);//获取当前列ID
Test.Models.Test test = tdc.Test.SingleOrDefault(t => t.ID == id);//SingleOrDefault获取满足条件的唯一值,若为空,则为NULL; t为Test.Models.Test的实例化,查询获取的id;
tdc.Test.DeleteOnSubmit(test);//DeleteOnSubmit删除操作
tdc.SubmitChanges();
Bind();
}
/// <summary>
/// 修改操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ListView1_ItemEditing(object sender, ListViewEditEventArgs e)
{
ListView1.EditIndex = e.NewEditIndex;//获取编辑项的位置
Bind();
}
/// <summary>
/// 更新操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ListView1_ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
int id = Convert.ToInt32(ListView1.DataKeys[e.ItemIndex].Value);
Test.Models.Test test = tdc.Test.SingleOrDefault(t => t.ID == id);//同上
test.Username = ((TextBox)ListView1.Items[e.ItemIndex].FindControl("tbUsername")).Text;
test.Password = ((TextBox)ListView1.Items[e.ItemIndex].FindControl("tbPassword")).Text;
tdc.SubmitChanges();
ListView1.EditIndex = -1;
Bind();
}
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
Bind();
}
TestDataContext tdc = new TestDataContext();//创建Linq的数据操作类
/// <summary>
/// 数据库绑定操作
/// </summary>
private void Bind()
{
ListView1.DataSource = tdc.Test;//tdc.text是获取数据库的表
ListView1.DataBind();// ListView的数据绑定
}
protected void Button1_Click(object sender, EventArgs e)
{
ListView1.InsertItemPosition = InsertItemPosition.LastItem;//InsertItemPosition.LastItem的意思是显示插入的位置是在表格的最后一列
Bind();
}
protected void ListView1_ItemCanceling(object sender, ListViewCancelEventArgs e)
{
ListView1.InsertItemPosition = InsertItemPosition.None;//InsertItemPosition.None的意思是不显示插入或修改的显示
ListView1.EditIndex = -1;//为-1则取消
Bind();
}
/// <summary>
/// 插入操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ListView1_ItemInserting(object sender, ListViewInsertEventArgs e)
{
string username = ((TextBox)e.Item.FindControl("tbUsername")).Text;//将tbUsername的值付给username
string password = ((TextBox)e.Item.FindControl("tbPassword")).Text;//同理
Test.Models.Test test = new Test.Models.Test();//将数据库的操作类实体化 Test(命名空间)Models(文件名)Test(LINQ to SQL 类)
test.Username = username;
test.Password = password;
tdc.Test.InsertOnSubmit(test);//InsertOnSubmit插入操作
tdc.SubmitChanges();//执行更新
ListView1.InsertItemPosition = InsertItemPosition.None;
Bind();
}
/// <summary>
/// 删除操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ListView1_ItemDeleting(object sender, ListViewDeleteEventArgs e)
{
int id = Convert.ToInt32(ListView1.DataKeys[e.ItemIndex].Value);//获取当前列ID
Test.Models.Test test = tdc.Test.SingleOrDefault(t => t.ID == id);//SingleOrDefault获取满足条件的唯一值,若为空,则为NULL; t为Test.Models.Test的实例化,查询获取的id;
tdc.Test.DeleteOnSubmit(test);//DeleteOnSubmit删除操作
tdc.SubmitChanges();
Bind();
}
/// <summary>
/// 修改操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ListView1_ItemEditing(object sender, ListViewEditEventArgs e)
{
ListView1.EditIndex = e.NewEditIndex;//获取编辑项的位置
Bind();
}
/// <summary>
/// 更新操作
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ListView1_ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
int id = Convert.ToInt32(ListView1.DataKeys[e.ItemIndex].Value);
Test.Models.Test test = tdc.Test.SingleOrDefault(t => t.ID == id);//同上
test.Username = ((TextBox)ListView1.Items[e.ItemIndex].FindControl("tbUsername")).Text;
test.Password = ((TextBox)ListView1.Items[e.ItemIndex].FindControl("tbPassword")).Text;
tdc.SubmitChanges();
ListView1.EditIndex = -1;
Bind();
}
本文章如标注为原创,转载时请注明出处!