c# - 放入用户控件时,EventHandler 不会触发
问题描述
我有使用事件处理程序呈现删除按钮的代码。将代码放在表单的 .aspx.cs 中,然后触发事件处理程序,一切正常。当我将代码移动到用户控件时,我单击删除按钮并弹出确认消息,不执行任何其他操作。它不运行,您无法在调试器等中运行它。
doDelete278T 函数在用户控件中。
当代码在用户控件中时,为什么 C# 不运行该doDelete278T
函数?
代码示例:
try
{
SqlDataReader r = cmd.ExecuteReader();
int j = 0;
short tabby = 32;
if (r.HasRows)
pnl_278t.Visible = true;
while (r.Read())
{
LinkButton lbt = new LinkButton();
lbt.ID = "delete_" + r[_folderName + "_FT278T_UID"].ToString();
lbt.CausesValidation = false;
lbt.Text = "X";
lbt.Click += new EventHandler(doDelete278T);
lbt.OnClientClick = "return confirm('Are you sure you want to delete this 278T Record?')";
lbt.TabIndex = tabby++;
pnl_add278t.Controls.Add(lbt);
pnl_add278t.Controls.Add(new LiteralControl(" "));
j++;
}//end while
//tbx_278T_count.Text = j.ToString();
}
解决方案
我的实际问题是,当单击按钮时需要运行控件加载逻辑,就像在按钮处理程序位于 aspx.cs 中的页面中一样。
旧 ascx.cs Page_Load protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack)
{
do278TLoad();
}
}
新 ascx.cs Page_Load
protected void Page_Load(object sender, EventArgs e)
{
_tbx_uid = (TextBox)this.Parent.Parent.FindControl("pnl_vars").FindControl("tbx_uid");
if (!IsPostBack)
{
if (_tbx_uid.Text != "0")
{
do278TLoad();
}
}
else
{
do278TLoad();
}
}
推荐阅读
- java - 获取 EditText 输入值并在 TextView 中显示一些计算结果
- angular - 未定义标识符“长度”。'null' 不包含这样的成员 ng
- bash - 删除月、年之后的所有文本
- javascript - 第一个stackoverflow问题 每日编码问题#7
- swift - 将 Cognito 中的用户信息与 AWS Amplify GraphQL 关联
- swift - swift 5 覆盖 func viewWillAppear 的问题
- javascript - Angular 8 - @ViewChild 在父组件上返回未定义。(没有嵌套的 ngIf 并在 ngAfterViewInit 中调用)
- php - 使用 php 文件取消链接时,它不会删除文件
- kernel - 我有问题女巫编译android linux内核
- debugging - IntelliJ Idea 中的 Ballerina 调试带有“正在收集数据..”消息