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>
加入以下代码即可解决问题。
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("非法数据!"); } } } } }