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

来源:互联网 发布:淘宝点确认收货没反应 编辑:程序博客网 时间:2024/06/04 08:25

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("非法数据!");                    }            }                             }    }}



原创粉丝点击