我有一个 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/