自定义控件无法激发,附代码。

liydotnet 2008-07-15 04:46:33

[PersistChildren(false)]
[DefaultProperty("DataSource")]
[ParseChildren(true)]
[ToolboxData("<{0}:Repeater runat=server></{0}:Repeater>")]
public class Repeater : System.Web.UI.WebControls.Repeater
{
public delegate void EventDelete(Object sender, EventArgs e);
/// <summary>
/// 删除事件
/// </summary>
public event EventDelete ItemDelete;

public Button _btnDelete = new Button();

public Repeater()
: base()
{
_btnDelete.Click += new EventHandler(OnDelete);
}


[DefaultValue("数据库中无该条件数据!!")]
[Browsable(true)]
public string EmptyDataText
{
get
{
string s = ViewState["EmptyDataText"] as string;
return s == null ? "数据库中无该条件数据!!" : s;
}

set
{
ViewState["EmptyDataText"] = value;
}
}

[DefaultValue("")]
[Browsable(true)]
[Category("Appearance")]
[Description("删除按钮ID")]
public string DeleteButtonID
{
get
{
string s = ViewState["DeleteButtonID"] as string;
return s == null ? "bt_delete" : s;
}
set { ViewState["DeleteButtonID"] = value; }
}

[DefaultValue("")]
[Browsable(true)]
[Category("Appearance")]
[Description("全选框名称")]
public string CheckBoxName
{
get
{
string s = ViewState["CheckBoxName"] as string;
return s == null ? "cb_guid" : s;
}
set { ViewState["CheckBoxName"] = value; }
}



protected override void Render(HtmlTextWriter writer)
{
if (this.Items.Count > 0)
{
_btnDelete.ID = this.DeleteButtonID;
_btnDelete.Text = "删除选中的数据";
_btnDelete.Width = 150;
writer.WriteLine("<table cellpadding=\"1\" cellspacing=\"1\" class=\"itemTable\">");
writer.WriteLine("<tr class=\"delete\">");
writer.WriteLine("<td>");
_btnDelete.RenderControl(writer);
writer.WriteLine("</td>");
writer.WriteLine("</table>");
}
base.Render(writer);
if (this.Items.Count == 0 && this.DataSource != null)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("<table cellpadding=\"1\" cellspacing=\"1\" class=\"itemTable\">");
sb.AppendLine("\t<tr class=\"nodata\">");
sb.AppendLine("\t\t<td>" + this.EmptyDataText + "</td>");
sb.AppendLine("\t</tr>");
sb.AppendLine("</table>");
writer.Write(sb.ToString());
}
StringBuilder str = new StringBuilder();
str.AppendLine("<script type=\"text/javascript\">");
str.AppendLine("$(document).ready(function(){");
str.AppendLine(" $(\"input[@name=" + this.CheckBoxName + "]\").click(function(){");
str.AppendLine(" if(this.checked){$(this).parents(\"tr\").addClass(\"selected\");}");
str.AppendLine(" else{$(this).parents(\"tr\").removeClass(\"selected\");}");
str.AppendLine(" });");
str.AppendLine(" $(\"#"+this._btnDelete.ClientID+"\").click(function(){");
str.AppendLine(" var i=0;");
str.AppendLine(" $(\"input[@name=" + this.CheckBoxName + "][@checked]\").each(function(){");
str.AppendLine(" i++;");
str.AppendLine(" });");
str.AppendLine(" if(i>0){");
str.AppendLine(" return confirm(\"你确定要删除这“\"+i+\"”项吗?\")");
str.AppendLine(" }else{");
str.AppendLine(" alert(\"无可删除数据\");return false;");
str.AppendLine(" }");
str.AppendLine(" })");
str.AppendLine("})");
str.AppendLine("</script>");
writer.Write(str.ToString());
}

protected override void OnItemCreated(RepeaterItemEventArgs e)
{
//if (e.Item.ItemType == ListItemType.Header)
//{
// Button bt_delete = e.Item.FindControl(this.DeleteButtonID) as Button;
// if (bt_delete != null)
// {
// bt_delete.Click += new EventHandler(OnDelete);
// }
//}
base.OnItemCreated(e);
}

protected void OnDelete(object sender, EventArgs e)
{
if (ItemDelete != null)
{
ItemDelete(sender, e);
}
}


}


使用控件无法激发ItemDelete事件。。

麻烦懂的人都我看看
...全文
102 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
s208ping 2008-07-16
  • 打赏
  • 举报
回复
友情帮顶
icelattice 2008-07-16
  • 打赏
  • 举报
回复
不知道,,,,
liydotnet 2008-07-15
  • 打赏
  • 举报
回复
没人知道??
liydotnet 2008-07-15
  • 打赏
  • 举报
回复
调用代码:
this.Repeater1.ItemDelete += new Control.Repeater.EventDelete(Repeater1_ItemDelete);
shoushii 2008-07-15
  • 打赏
  • 举报
回复
1、布线操作应该在Oninit事件中。
2、没有发现任何调用OnDelete方法的地方。

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧