c# - 动态按钮的事件处理程序未触发
问题描述
所以,我这里有两件事。我有一个名为 MainButton 的静态按钮,它已经永久存在。MainButton 所做的是它动态创建一个下拉列表和另一个按钮(setButton)。但是,当我为 setButton 创建 onclickevent 时,它似乎没有触发。我已经看到了这个问题的几个例子,并意识到我必须使用 Page_Init 方法才能工作,但我不知道在我的代码中实现这个,我真的需要帮助。(对不起,我只是 ASP.NET 的初学者)
这是我的代码:
public partial class createTest : System.Web.UI.Page
{
public DropDownList questionType = new DropDownList();
string selectedQuestion;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Page_OnInit(EventArgs e)
{
}
private void setButton_Click(object sender, EventArgs e)
{
Debug.WriteLine("Test");
}
protected void mainButton_Click(object sender, EventArgs e)
{
ContentPlaceHolder mainContent = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolder1");
questionType.Items.Add("MCQ");
questionType.Items.Add("Open Ended");
mainContent.Controls.Add(questionType);
Create();
selectedQuestion = questionType.SelectedValue;
Debug.WriteLine(selectedQuestion);
}
void Create ()
{
ContentPlaceHolder mainContent = (ContentPlaceHolder)this.Master.FindControl("ContentPlaceHolder1");
Button setBtn;
setBtn = new Button();
setBtn.Text = "Set";
setBtn.Click += new EventHandler(setButton_Click);
mainContent.Controls.Add(setBtn);
}
}
}
解决方案
您的问题出在回发、动态按钮和 asp.net 上不能很好地协同工作。我更喜欢添加按钮并将其设置为 visible="false" 并在单击时将其设置为 "true"。
如果您要添加多个按钮,则可以使用中继器。
推荐阅读
- linux - 有没有办法在没有先安装 Perl 的情况下在 Linux 机器上安装 ora2pg 工具?
- swift - NavigationBackButton 和 List-headline 和 NavigationBackButton 之间的空格
- visual-studio - docker-compose 与 Visual Studio 混合 Windows 和 Unix 路径
- mysql - 这可以用子查询来完成吗?
- reactjs - 无法将 React 状态设置为对象数组
- javascript - React Native Expo MapView - 将标记详细信息传递给扩展的底部视图
- vue.js - Vue - 将带有冒号的道具传递到组件时出现问题
- python - 用 0 替换每个字符串值
- java - How to get selective columns in Export Csv in Spring boot
- php - json_decode 不带引号的值