设计管理一个用户程序,对用户的状态进行管理,当用户状态是启用时整行显示红色。

设计思路:用Repeater遍历每行记录,在操作状态的表格中旋转两个按钮,一个为启用功能,另一个为禁用功能,根据Repeater 的itemDataBind和itemCommand事件来控制即可。

操作步骤:

1.建立数据表T_Stauts,建立三个字段:自增ID,用户名及用户状态(bit类型)。启用时值为true(1),禁用时为false(0)

2.建立强类型数据集(拖动T_Status表到数据集的表单上).添加两个功能语句:禁用功能(DisnableStatusById)

UPDATE T_Status set status=0 where id=@id

启用功能(EnableStatusById):

UPDATE T_Status set status=1 where id=@id

3.在页面上放入ObjectDataSource及repeater,设定它们的一些属性配置并连接上面的数据集。

4.以下为网页的html源码:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="itemCommand.aspx.cs" Inherits="Repeater.itemCommand" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css">
.disablecss{background-color:Red;}
</style>
</head>
<body>
<form id="form1" runat="server">
<div> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
InsertMethod="Insert" OldValuesParameterFormatString="original_{0}"
SelectMethod="GetData"
TypeName="Repeater.objsrc.DAL.DataSetStatusTableAdapters.T_StatusTableAdapter">
<InsertParameters>
<asp:Parameter Name="name" Type="String" />
<asp:Parameter Name="status" Type="Boolean" />
</InsertParameters>
</asp:ObjectDataSource> <asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1"
onitemcommand="Repeater1_ItemCommand" onitemdatabound="Repeater1_ItemDataBound">
<HeaderTemplate><table border="1"><th width="180">用户名</th><th width="180">操作状态</th></HeaderTemplate>
<ItemTemplate>
<tr id="tr1" runat="Server">
<td><%#Eval("name") %></td>
<td>
<asp:Button id="enablebtn" Text="启用" runat="server" CommandArgument='<%#Eval("id") %>' CommandName="enablestatus" />
<asp:Button id="disnablebtn" Text="禁用" runat="server" CommandArgument='<%#Eval("id") %>' CommandName="disnablestatus" OnClientClick="return confirm('您真的要禁用吗?')" />
</td>
</tr>
</ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater> </div>
</form>
</body>
</html>

5.当状态为启动时显示红色,禁用按钮可见,启用按钮不可见,反之亦然。此代码写在Repeater的itemDataBound中。

 protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
{
DataRowView drv = (DataRowView)e.Item.DataItem;
var row = (Repeater.objsrc.DAL.DataSetStatus.T_StatusRow)drv.Row;
Button enablebtn = (Button)e.Item.FindControl("enablebtn");
Button disnablebtn = (Button)e.Item.FindControl("disnablebtn");
if (row.status) //启用状态
{
enablebtn.Visible = false;
disnablebtn.Visible = true;
}
else if (!row.status) //禁用状态
{
enablebtn.Visible = true;
disnablebtn.Visible = false;
HtmlTableRow tr = (HtmlTableRow)e.Item.FindControl("tr1"); //对整行描红,用runat="server"才能访问
tr.Attributes["class"] = "disablecss"; }
else
{
throw new Exception("状态不对");
}
} }

6.当点击禁用或启用按钮时要更新数据表并重新绑定数据,主要写在Repeater的itemCommand事件中

protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
{
T_StatusTableAdapter adapter = new T_StatusTableAdapter();
int id=Convert.ToInt32(e.CommandArgument);
if (e.CommandName == "enablestatus")
{
adapter.EnableStatusById(id);
}
else if (e.CommandName == "disnablestatus")
{
adapter.DisnableStatusById(id);
}
Repeater1.DataBind();
}
}

7.显示截图

最新文章

  1. Swagger接入
  2. 湖南附中模拟day1 收银员
  3. JSP标准标签库(JSTL)之核心标签(下)
  4. webpack入门--前端必备
  5. C++实现glut绘制点、直线、多边形、圆
  6. linux的fork函数
  7. Dot Net设计模式—MVC模式
  8. IOI1994 北京2008的挂钟 迭代加深
  9. Largest Rectangle in a Histogram(HDU 1506 动态规划)
  10. UVA 12657 Boxes in a Line
  11. 制作openstack用的centos6.5镜像
  12. 为什么python适合写爬虫?(python到底有啥好的?!)
  13. Python format 格式化函数
  14. BZOJ1500 [NOI2005]维修数列-fhq_Treap
  15. css换行
  16. vue组件导航栏动态添加class
  17. Java 画一个5X5的方形矩阵
  18. PHP与JavaScript下的Cookie操作
  19. CSS--交互效果
  20. linux(centos6.9)安装步骤

热门文章

  1. Android 仿PhotoShop调色板应用(二) 透明度绘制之AlphaPatternDrawable
  2. jQuery ajax 传递数组到struts2
  3. 利用jpedal进行pdf转换成jpeg,jpg,png,tiff,tif等格式的图片
  4. webUploader上传组件 实际运用小结
  5. 实现Android K的伪沉浸式
  6. static 方法.
  7. TreeView checkbox
  8. oracle 的 startup,startup mount,startup nomount之间的区别
  9. ReactiveCocoa入门教程——第一部分
  10. newInstance()和new的区别