62,050
社区成员
发帖
与我相关
我的任务
分享
<%@ Control Language="C#" ClassName="XXX" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Implements Interface="IXXX" %>
<script runat="server">
public override void DataBind()
{
base.DataBind();
DropDownList1.DataBind();
}
public string Name
{
get
{
var nm = ViewState["name"];
return (string)nm ?? "无名氏";
}
set
{
if (Name != value)
{
ViewState["name"] = value;
EnsureChildControls();
pName.DataBind();
}
}
}
public event Action NameChanged;
public string MarkedValue
{
get
{
EnsureChildControls();
return this.DropDownList1.SelectedValue;
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
{
switch (this.DropDownList1.SelectedValue)
{
case "标记:红":
this.div.ForeColor = Color.Red;
break;
case "标记:蓝":
this.div.ForeColor = Color.Blue;
break;
case "标记:黑":
this.div.ForeColor = Color.Black;
break;
}
}
protected void LinkButton1_Click(object sender, EventArgs e)
{
Name = pName.Text;
if (NameChanged != null)
NameChanged();
}
private List<string> GetDropdownList1Datas()
{
return new List<string> { "标记:黑", "标记:红", "标记:蓝" };
}
</script>
<asp:TextBox runat="server" ID="pName" Text="<%# Name %>"></asp:TextBox>
先生(女士): <asp:LinkButton ID="LinkButton1" runat="server"
OnClick="LinkButton1_Click">修改名字</asp:LinkButton>
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"
DataSource="<%# GetDropdownList1Datas() %>" />
<br />
<asp:Panel runat="server" ID="div">
你的合同付款期限已到,未付款<asp:TextBox runat="server" ID="pMoney" Width="60px" />元人民币,请及时付款。
<br />
<br />
XXX年XXX月XXX日
</asp:Panel>
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Collections.Generic" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
List<string> 插入的人物唯一编号
{
get
{
var x = ViewState["num"];
if (x == null)
{
x = new List<string>();
ViewState["num"] = x;
}
return (List<string>)x;
}
}
protected void Page_Load(object sender, EventArgs e)
{
this.PlaceHolder1.Controls.Clear();
for (var i = 0; i < 插入的人物唯一编号.Count; i++)
InsertAscx(插入的人物唯一编号[i], false); //注意第二个参数使用false
}
protected void Button1_Click(object sender, EventArgs e)
{
var 编号 = "sp" + (流水号++).ToString();
插入的人物唯一编号.Add(编号);
InsertAscx(编号, true); //注意第二个参数使用true
}
void InsertAscx(string 唯一编号, bool 是第一次生成控件)
{
var sub = new PlaceHolder { ID = "sub_" + 唯一编号 };
this.PlaceHolder1.Controls.Add(sub);
var c = this.LoadControl("XXX.ascx");
c.ID = "crt_" + 唯一编号;
sub.Controls.Add(c);
var b = new Button { Text = "删除", ID = "del_" + 唯一编号 };
sub.Controls.Add(b);
sub.Controls.Add(new LiteralControl { Text = " " });
var n = new Button { ID = "cnt_" + 唯一编号 };
sub.Controls.Add(n);
sub.Controls.Add(new LiteralControl { Text = "<hr />", ID = "hr_" + 唯一编号 });
if (是第一次生成控件)
{
b.Attributes["编号"] = 唯一编号;
((IXXX)c).Name = 唯一编号;
n.Text = "点击这里显示当前时间";
c.DataBind();
}
else
{
b.Click += (sender, e) =>
{
this.PlaceHolder1.Controls.Remove(this.PlaceHolder1.FindControl("sub_" + 唯一编号));
插入的人物唯一编号.Remove(唯一编号);
};
n.Click += (sender, e) =>
{
((Button)sender).Text = DateTime.Now.ToLongTimeString();
};
((IXXX)c).NameChanged += () =>
{
ScriptManager.RegisterStartupScript(this, typeof(Page), string.Empty,
string.Format("alert('{0}');", ((IXXX)c).Name.Replace("'", "\\'")), true);
};
}
}
private int 流水号
{
get
{
object x = ViewState["流水号"];
return x == null ? 1 : (int)x;
}
set
{
ViewState["流水号"] = value;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>演示动态增加\删除\编辑组件内容</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Button ID="Button1" runat="server" Text="插入" OnClick="Button1_Click" />
<asp:Button ID="Button2" runat="server" Text="回发测试页面状态" UseSubmitBehavior="false" />
<hr />
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
</form>
</body>
</html>