gpt4 book ai didi

带有子控件的asp.net Web服务器控件,事件未触发

转载 作者:行者123 更新时间:2023-12-01 08:41:39 25 4
gpt4 key购买 nike

我有一个简单的 Web 控件 (TaskList),它可以有继承自 LinkBut​​ton 的子 (Task),可以以声明方式或编程方式添加。这工作正常,但我无法在我的代码中触发任务的 onclick 事件。代码..

    [ToolboxData("<{0}:TaskList runat=\"server\"> </{0}:TaskList>")]
[ParseChildren(true)]
[PersistChildren(false)]
public class TaskList : System.Web.UI.Control
{
//[DefaultProperty("Text")]
public TaskList()
{}

private List<Task> _taskList = new List<Task>();

private string _taskHeading = "";

public string Heading
{
get
{
return this._taskHeading;
}
set
{
this._taskHeading = value;
}
}

[NotifyParentProperty(true)]
[PersistenceMode(PersistenceMode.InnerProperty)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public List<Task> Tasks
{
get
{
return this._taskList;
}

set
{
this._taskList = value;
}
}


protected override void CreateChildControls()
{
foreach (Task task in this._taskList)
this.Controls.Add(task);

base.CreateChildControls();
}


protected override void Render(HtmlTextWriter writer)
{
writer.Write("<h2>" + this._taskHeading + "</h2>");
writer.Write("<div class='tasks_container'>");
writer.Write("<div class='tasks_list'>");
writer.Write("<ul>");
foreach (Task task in this._taskList)
{
writer.Write("<li>");
task.RenderControl(writer);
writer.Write("</li>");
}
writer.Write("</ul>");
writer.Write("</div>");
writer.Write("</div>");
}
}

public class Task : LinkButton
{
private string _key = "";

public string Key
{
get
{
return this._key;
}
set
{
this._key = value;
}
}

}

标记:

 <rf:TaskList runat="server" ID="tskList" Heading="Tasks">
<Tasks>
<rf:Task Key="ba" ID="L1" Text="Helllo" OnClick="task1_Click" runat="server" />
</Tasks>
</rf:TaskList>

Onclick 事件 task1_Click 在单击时从不触发(尽管会发生回发)。

最佳答案

TaskList 需要实现 INamingContainer 以正确路由每个 Task 的事件。

关于带有子控件的asp.net Web服务器控件,事件未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1803041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com