ListView控件用于显示数据,它提供了编辑、删除、插入、分页与排序等功能,它的分页功能是通过DataPager控件来实现的。DataPager控件的PagedControlID属性指定ListView控件ID,它可以摆放在两个位置,一是内嵌在ListView控件的<LayoutTemplate>标签内,二是独立于ListView控件。
1.前台页面代码:
DataKeyNames: 数据库表的主键名
OnItemEditing:启用编辑
OnItemCanceling:取消功能
OnItemUpdating:更新功能
同时添加相应的Button 并为CommandName 取名: Delete,Cancel,Update , Edit
<asp:ListView runat="server" ID="listOrder" OnItemDeleting="listOrder_ItemDeleting" DataKeyNames="orderid" OnItemEditing="listOrder_ItemEditing" OnItemCanceling="listOrder_ItemCanceling" OnItemUpdating="listOrder_ItemUpdating">
<LayoutTemplate>
<table class="table">
<thead>
<tr>
<th>订单编号</th>
<th>创建日期</th>
<th>订单状态</th>
</tr>
</thead>
<tbody>
<asp:PlaceHolder runat="server" ID="itemPlaceholder" />
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr class="active">
<td><%#Eval("orderid") %></td>
<td><%#DataBinder.Eval(Container.DataItem,"createdate","{0:d}") %></td>
<td>
<asp:Label Text='<%#Eval("orderstatus") %>' runat="server" ID="status"/>
</td>
<td>
<asp:Button class="btn btn-danger" runat="server" Text="删除" ID="btnDelete" CommandName="Delete" OnClientClick="return confirm('确认删除?')"/>
<asp:Button class="btn btn-default" Text="修改" runat="server" ID="Edit" CommandName="Edit"/>
</td>
</tr>
</ItemTemplate>
<EditItemTemplate>
<tr>
<td><%#Eval("orderid") %></td>
<td><%#Eval("createdate") %></td>
<td>
<%-- <asp:TextBox runat="server" ID="tbStatus" Width="100" MaxLength="10" BorderColor="Silver" BorderWidth="1" BorderStyle="Solid" Text='<%#Bind("orderstatus")%>'/>--%>
<asp:DropDownList runat="server" ID="ddStatus">
<asp:ListItem Text="未付款" />
<asp:ListItem Text="已付款" />
<asp:ListItem Text="已发货" />
</asp:DropDownList>
</td>
<td>
<asp:Button Text="更新" runat="server" ID="Update" CommandName="Update" CssClass="btn btn-default"/>
<asp:Button Text="取消" runat="server" ID="Cancel" CommandName="Cancel" CssClass="btn btn-info"/>
</td>
</tr>
</EditItemTemplate>
</asp:ListView>
listOrder_ItemDeleting:
//删除操作
protected void listOrder_ItemDeleting(object sender, ListViewDeleteEventArgs e)
{
int keyid = int.Parse(listOrder.DataKeys[e.ItemIndex].Value.ToString());
string sql = "delete from tb_orderdetails where orderid = "+keyid+"";
if (SqlHelper.ExecuteSql(sql)>0)
Response.Write("<script>alert('删除成功');</script>");
else
Response.Write("<script>alert('删除失败');</script>");
string osql = "delete from tb_order where orderid ="+keyid+"";
SqlHelper.ExecuteSql(osql);
listItem();
}
listOrder_ItemEditing
protected void listOrder_ItemEditing(object sender, ListViewEditEventArgs e)
{
listOrder.EditIndex = e.NewEditIndex;
listItem();
}
listOrder_ItemCanceling:
protected void listOrder_ItemCanceling(object sender, ListViewCancelEventArgs e)
{
if (e.CancelMode == ListViewCancelMode.CancelingEdit)
{
listOrder.EditIndex = -1;
listItem();
}
}
listOrder_ItemUpdating:
//数据更新操作
protected void listOrder_ItemUpdating(object sender, ListViewUpdateEventArgs e)
{
int keyid = int.Parse(listOrder.DataKeys[e.ItemIndex].Value.ToString());
// TextBox tbstatus = (TextBox)listOrder.Items[e.ItemIndex].FindControl("tbStatus");
DropDownList ddList = (DropDownList)listOrder.Items[e.ItemIndex].FindControl("ddStatus");
if (string.IsNullOrEmpty(ddList.SelectedItem.Text))
Response.Write("<script>alert('状态不能为空')</script>");
else {
string update = "update tb_order set orderstatus ='" + ddList.SelectedItem.Text + "' where orderid = " + keyid + "";
if (SqlHelper.ExecuteSql(update) > 0)
{
listOrder.EditIndex = -1;
listItem();
}
else
Response.Write("<script>alert('更新失败')</script>");
}
}
datapager prerender (直接把绑定数据方法写在这儿就行,在pageload里可选择性省略)
protected void DataPagerOrder_PreRender(object sender, EventArgs e)
{
listItem();
}
数据绑定操作
//数据绑定
public void bind(string sql) {
DataSet ds = SqlHelper.Query(sql);
listOrder.DataSource = ds;
listOrder.DataBind();
}
public void listItem()
{
if (Request.QueryString["id"] == null)
{
string sql = "select * from tb_order";
bind(sql);
}
else
{
int status = int.Parse(Request.QueryString["id"].ToString());
switch (status)
{
case 1:
string payed = "select * from tb_order where orderstatus='已付款'";
bind(payed);
break;
case 2:
string paying = "select * from tb_order where orderstatus ='未付款'";
bind(paying);
break;
case 3:
string sended = "select * from tb_order where orderstatus ='已发货'";
bind(sended);
break;
case 4:
if (Session["search"] == null||Session["search"].ToString()=="")
{
string sql = "select * from tb_order";
bind(sql);
}
else {
int orderid = int.Parse(Session["search"].ToString());
string search = "select * from tb_order where orderid = " + orderid + "";
bind(search);
}
break;
}
}
}