c# - 来自 Gridview 中 UserControl 的事件未被触发

标签 c# .net asp.net

我有一个 gridview,它在每一行的模板列中都有一个用户控件。

在 RowDataBound 事件期间,我按如下方式订阅该事件

DateTimePicker dtp = (DateTimePicker)e.Row.FindControl("DateTimePickerPromoRunDate");
dtp.OnDateChanged +=new CustomEventHandler(dtp_OnDateChanged);

然后在控件中我有以下内容

public class CustomEventArgs : EventArgs
{
    public CustomEventArgs(DateTime dateSelected)
    {
        DateSelected = dateSelected;
    }
    public DateTime DateSelected { get; set; }
}

public delegate void CustomEventHandler(object sender, CustomEventArgs e);

public partial class DateTimePicker : System.Web.UI.UserControl
{
    public event CustomEventHandler OnDateChanged;
    protected virtual void OnCustomEvent(CustomEventArgs e)
    {
        e.DateSelected = Convert.ToDateTime(TextBoxDate.Text);
        if (OnDateChanged != null)
            OnDateChanged(this, e);
    }
 [blah blah blah]
 OnCustomEvent(new CustomEventArgs(Calendar1.SelectedDate));

问题是,当我调用 OnCustomEvent 方法时,OnDateChanged 事件为空,就好像我没有订阅它一样。

存在类似的问题,如果我在尝试使用数据绑定(bind)时在数据绑定(bind)上设置用户控件的属性,那么这些属性为空...有人可以指出我在这里做错了什么吗?

最佳答案

您可能必须在每次回复时订阅您的 ondatechanged。否则页面不会记住它。

关于c# - 来自 Gridview 中 UserControl 的事件未被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5948476/

相关文章:

c# - 如何在C#中向对象数组添加值

c# - 新 Pane 添加到错误的选项卡组

c# - 序列化为 XML 文件会创建无效的 XML 文档 (11,12)

c# - 回发时添加了用户控件,但不显示

asp.net - ScriptManager.RegisterStartUpScript(...) 不工作

c# - block IEnumerable/ICollection 类 C# 2.0

.net - 处理文化中受支持的日期时间值的有限范围时,最佳实践是什么?

c# - 允许使用 LINQ 查询中的 ToDictionary() 重复键

c# - 为什么要使用通用类型然后将其限制为具有 "where"的一种类型?

c# - 如何在 ASP.NET 中显示来自 C# 的警告框?