62,041
社区成员
发帖
与我相关
我的任务
分享
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Menu.aspx.cs" Inherits="Menu"%>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<asp:LinkButton ID="btnAdd" runat="server" Text="增加" OnClick="btnAdd_Click"/>
<asp:Repeater ID="rept" runat="server" OnItemCreated="rept_ItemCreated" OnItemDataBound="rept_ItemDataBound" OnItemCommand="rept_ItemCommand">
<ItemTemplate>
<asp:Literal ID="Content" runat="server"/>
<asp:TextBox ID="tbx" runat="server"/>
<asp:LinkButton ID="btnUpdate" runat="server" Text="测试" CommandName="Update"/>
</ItemTemplate>
</asp:Repeater>
</form>
</body>
</html>
using System;
using System.Text;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections.Generic;
using System.Collections;
public partial class Menu : System.Web.UI.Page
{
private string _cmd = DataControlCommands.SelectCommandName;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ArrayList ls = new ArrayList();
rept.DataSource = ls;
rept.DataBind();
}
}
protected void rept_ItemCreated(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Header) {}
else if (e.Item.ItemType == ListItemType.Footer) {}
else
{
if (_cmd == DataControlCommands.NewCommandName)
{
Literal content = e.Item.FindControl("Content") as Literal;
content.Text = "It is a Literal";//content.Text的内容是动态的,且只能在点新增按钮时赋给content.Text,不能在其它地方给content.Text赋值.这里为了测试方便写了个固定值
TextBox tbx = e.Item.FindControl("tbx") as TextBox;
tbx.Text = "It is a TextBox";
}
}
}
protected void rept_ItemCommand(object source, RepeaterCommandEventArgs e)
{
if (e.CommandName == DataControlCommands.UpdateCommandName)
{
Literal content = e.Item.FindControl("Content") as Literal;
TextBox tbx = e.Item.FindControl("tbx") as TextBox;
//为什么tbx.Text有值,而content.Text无值?
}
}
protected void rept_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
}
protected void btnAdd_Click(object sender, EventArgs e)
{
ArrayList ls = new ArrayList();
ls.Add("1");
_cmd = DataControlCommands.NewCommandName;
rept.DataSource = ls;
rept.DataBind();
}
}
<form id="form1" runat="server">
<asp:LinkButton ID="btnAdd" runat="server" Text="增加" OnClick="btnAdd_Click"/>
<asp:Repeater ID="rept" runat="server" OnItemCreated="rept_ItemCreated" OnItemDataBound="rept_ItemDataBound" OnItemCommand="rept_ItemCommand">
<ItemTemplate> <asp:Literal ID="Content" runat="server"/>
<asp:TextBox ID="tbx" runat="server"/>
<asp:LinkButton ID="btnUpdate" runat="server" Text="测试" CommandName="Update"/>
</ItemTemplate>
</asp:Repeater>
<p><asp:Literal ID="Liter_outside" runat="server"></asp:Literal></p>
<asp:Button ID="Button1" runat="server" Text="Out" />
</form>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ArrayList ls = new ArrayList();
rept.DataSource = ls;
rept.DataBind();
Liter_outside.Text = "这是一个外围的Literal";//对外围的Literal控件赋值
}
}