4. Repeater 实例2

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

设计思路:用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.显示截图

4. Repeater 实例2

 

你可能感兴趣的:(实例)