Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在asp.net 4.5 c中动态添加按钮单击事件#_C#_Asp.net_Button_Dynamic - Fatal编程技术网

C# 在asp.net 4.5 c中动态添加按钮单击事件#

C# 在asp.net 4.5 c中动态添加按钮单击事件#,c#,asp.net,button,dynamic,C#,Asp.net,Button,Dynamic,我对这篇文章有一些问题[1]: 解决方案对我不起作用,我动态创建了一个按钮,它位于asp:table控制器中 我尝试将动态元素保存在会话中,并将会话值分配给页面加载中的对象,但这不起作用 一些想法 编辑: 。。。 按钮按钮=新按钮(); button.ID=“BtnTag”; button.Text=“Tag generieren”; 按钮。单击+=按钮\u标记Generieren; tabellenZelle.Controls.Add(按钮); 会话[“表”]=表; } public void

我对这篇文章有一些问题[1]:

解决方案对我不起作用,我动态创建了一个按钮,它位于asp:table控制器中

我尝试将动态元素保存在会话中,并将会话值分配给页面加载中的对象,但这不起作用

一些想法

编辑:
。。。
按钮按钮=新按钮();
button.ID=“BtnTag”;
button.Text=“Tag generieren”;
按钮。单击+=按钮\u标记Generieren;
tabellenZelle.Controls.Add(按钮);
会话[“表”]=表;
}
public void按钮\u TagGenerieren(对象发送方,事件参数e)
{
TableRowCollection选项卡ellenzeilen=qvTabelle.Rows;
for(int i=0;i
问题在于页面生命周期中创建te按钮及其事件的时刻。为此,请尝试page_init事件。

将每个控件存储到会话状态不是一个好做法

我发现的唯一问题是,当页面发布回服务器时,您需要重新加载具有相同Id的控件。否则,这些控件将为空

<asp:PlaceHolder runat="server" ID="PlaceHolder1" />
<asp:Label runat="server" ID="Label1"/>

protected void Page_Load(object sender, EventArgs e)
{
    LoadControls();
}

private void LoadControls()
{
    var button = new Button {ID = "BtnTag", Text = "Tag generieren"};
    button.Click += button_Click;
    PlaceHolder1.Controls.Add(button);
}

private void button_Click(object sender, EventArgs e)
{
    Label1.Text = "BtnTag button is clicked";
}

页面加载中的创建按钮

            Button btn = new Button();
            btn.Text = "Dynamic";
            btn.Click += new EventHandler(btnClick);
            PlaceHolder1.Controls.Add(btn)
按钮点击事件

protected void btnClick(object sender, EventArgs e)
{
  // Coding to click event
}

首先,为什么要动态创建它?我有一个asp:面板,显示在“数据集”的详细信息中,并用事件动态填充数据,我认为您根本不需要使用会话。。。如果您更改页面的控件结构,它将自动保持。有趣的是,会话分配了正确的数据,但这并没有显示在表面上,这可能也会帮助其他人
protected void btnClick(object sender, EventArgs e)
{
  // Coding to click event
}