通过启动禁止按钮改变后台数据库数据

1.前端代码:

所有需要在后端操作的HTML控件,需加入 runat="server"在服务端运行。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="status.aspx.cs" Inherits="ASP.NET高级.status" %>

<!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"  >
    .Enableds{background-color:White;}
    .Disableds{background-color:Red ;}
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:ObjectDataSource ID="UpdateDisabled" runat="server" DeleteMethod="Delete" 
            InsertMethod="Insert" OldValuesParameterFormatString="original_{0}" 
            SelectMethod="GetData" 
            TypeName="ASP.NET高级.dal.EnableTableAdapters.statusTableAdapter" 
            UpdateMethod="Update">
            <DeleteParameters>
                <asp:Parameter Name="Original_id" Type="Int64" />
            </DeleteParameters>
            <UpdateParameters>
                <asp:Parameter Name="id" Type="Int64" />
                <asp:Parameter Name="username" Type="String" />
                <asp:Parameter Name="status" Type="String" />
                <asp:Parameter Name="Original_id" Type="Int64" />
            </UpdateParameters>
            <InsertParameters>
                <asp:Parameter Name="id" Type="Int64" />
                <asp:Parameter Name="username" Type="String" />
                <asp:Parameter Name="status" Type="String" />
            </InsertParameters>
        </asp:ObjectDataSource>
        
        <asp:Repeater ID="Repeater1" runat="server" DataSourceID="UpdateDisabled" 
            onitemcommand="Repeater1_ItemCommand" 
            onitemdatabound="Repeater1_ItemDataBound">
            <HeaderTemplate ><table border ="1"></HeaderTemplate>
            <ItemTemplate>
           <tr runat ="server"  id="trRow"> <td><%#Eval("username") %></td><td><%#Eval("status") %></td>
            <td><asp:Button runat ="server" Text ="启用" ID="btnEnabled"  CommandName ="Enabled" CommandArgument ='<%#Eval("id") %>' /></td>
            <td><asp:Button runat ="server" Text ="禁用" ID="btnDisabled" CommandName ="Disabled" CommandArgument ='<%#Eval("id") %>' OnClientClick ="return confirm('真的要禁用吗?');" /></td> </tr>
            </ItemTemplate>
            <FooterTemplate ></table ></FooterTemplate>
            
        </asp:Repeater>
        <br />
        
        <br />
    
    </div>
    </form>
</body>
</html>


2.使用ItemTemplate模版后, 前端页面选择的ID通过 CommandArguments传递给数据库。所以模版中包含header类型,id为int类型,所以运行时会提示null

加入以下代码即可解决问题。

 if (e.Item.ItemType ==ListItemType .Item ||e.Item .ItemType ==ListItemType.AlternatingItem )

通过e.Item.FindContrl("");绑定控件。
后台代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ASP.NET高级.dal.EnableTableAdapters;
using System.Data;
using System.Web.UI.HtmlControls;

namespace ASP.NET高级
{
    public partial class status : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
         
        }

        protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "Enabled")
            {
                long id = Convert.ToInt64(e.CommandArgument );
                statusTableAdapter adapter = new statusTableAdapter();
                adapter.UpdateEnableById(id);
                Repeater1.DataBind();//刷新数据

            }
            else if (e.CommandName == "Disabled")
            {

                long id =Convert.ToInt64 ( e.CommandArgument);
                statusTableAdapter adapter = new statusTableAdapter();
                adapter.UpdateDisabledById(id);
                Repeater1.DataBind();//刷新数据

            }
        }

        protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType ==ListItemType .Item ||e.Item .ItemType ==ListItemType.AlternatingItem )
            {
                DataRowView RowView = (DataRowView)e.Item.DataItem;
                var UserRow = (ASP.NET高级.dal.Enable.statusRow)RowView.Row;
                if (UserRow.status == "禁用")
                {

                    HtmlTableRow trRow = (HtmlTableRow)e.Item.FindControl("trRow");
                    trRow.Attributes["class"] = "Disableds";
                    Button btnEnabled = (Button)e.Item.FindControl("btnEnabled");
                    Button btnDisabled = (Button)e.Item.FindControl("btnDisabled");
                    btnEnabled.Visible = true;
                    btnDisabled.Visible = false;

                }
                else

                    if (UserRow.status == "启用")
                    {
                        HtmlTableRow trRow = (HtmlTableRow)e.Item.FindControl("trRow");
                        trRow.Attributes["class"] = "Enableds";
                        Button btnEnabled = (Button)e.Item.FindControl("btnEnabled");
                        Button btnDisabled = (Button)e.Item.FindControl("btnDisabled");
                        btnEnabled.Visible = false;
                        btnDisabled.Visible = true;

                    }
                    else
                    {
                        throw new Exception("非法数据!");
                    }
            }
          
           
        }
    }
}




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值