zoukankan      html  css  js  c++  java
  • 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.显示截图

  • 相关阅读:
    SCXML和QScxml使用总结
    qt 使用qtxlsx 读写excel
    Qt Qml嵌入Widget以及Qml与Widget交互
    三步带你开发一个短链接生成平台
    SessionStorage、LocalStorage详解
    低代码如何支撑企业级应用开发?
    开发一个渐进式Web应用程序(PWA)前都需要了解什么?
    详细了解JS Map,它和传统对象有什么区别?
    5种可能在10年后消失的开发语言
    更改tomcat启动的端口号
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3167345.html
Copyright © 2011-2022 走看看