按钮动态创建的点击事件不起作用

Button dynamicaly created click event not working

提问人:JeromeLeg 提问时间:11/17/2023 更新时间:11/17/2023 访问量:14

问:

我想创建许多具有不同文本和背景的按钮,当我单击这些按钮时,我想将此按钮的文本和颜色传输为另一个函数的参数。

但是 Dynamicaly Created Button 在单击时调用 PostBack,而不是执行他的 on click 事件

这是我用于创建按钮的代码隐藏:

for (int i = 0; i < elem; i++)

            {
                decimal vol = Convert.ToDecimal(DT.Rows[Liste[j]].ItemArray[3].ToString());

               

                TableRow rowct = new TableRow();
                TableCell CT1 = new TableCell();


                var button = new Button
                {
                    ID = "Button" + Moda + j,
                    CssClass = "TimatButton",

                    CommandArgument = DT.Rows[Liste[j]].ItemArray[6].ToString(),
                    Text = DT.Rows[Liste[j]].ItemArray[1].ToString(),
                    BackColor = System.Drawing.ColorTranslator.FromHtml(DT.Rows[Liste[j]].ItemArray[6].ToString()),
                    ForeColor = System.Drawing.ColorTranslator.FromHtml(DT.Rows[Liste[j]].ItemArray[8].ToString()),
                    BorderColor = System.Drawing.ColorTranslator.FromHtml(DT.Rows[Liste[j]].ItemArray[6].ToString()),
                    CommandName = "Load_Items",
                                       


            };
                
                if (vol != 1)
                { button.CssClass = "TimatCutButton"; }

               

                CT1.Controls.Add(button);

                AsyncPostBackTrigger Trig = new AsyncPostBackTrigger();
                Trig.ControlID = button.ID;
                Trig.EventName = "Click";
                UpdatePanel2.Triggers.Add(Trig);

                j += 1;
  protected void Load_Items(object sender, EventArgs e)
        {

            Button a = sender as Button;
            System.Diagnostics.Debug.WriteLine(a.Text);
            
        }

其实void Load_Items只是为了测试代码

和前面

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true">
                          </asp:ScriptManager>

                 <div style="width:100%;height:20%;display:flex;flex-direction:row">

                      <asp:UpdatePanel ID="UpdatePanel2" runat="server" UpdateMode="Conditional" >
                           <ContentTemplate>
                     
                                <asp:HiddenField runat="server" ID="Colortxt"  />
                                <asp:HiddenField ID="Txtt" runat="server"/>

                      <table>
                        <tr >

                            <td class="BoxModality">
                              
                                <h4 style="text-align:center;color:darkblue">CT</h4>

                               <asp:table ID="tableCT" runat="server" style="margin:auto"></asp:table>                                              
                            </td>

                            <td class="BoxModality">
                                <h4 style="text-align:center;color:darkblue">RX</h4>
                                <asp:table ID="tablerx" runat="server" style="margin:auto"></asp:table>
                            </td>

                            <td class="BoxModality">
                                
                                <h4 style="text-align:center;color:darkblue">IRM</h4>
                      <asp:table ID="tableIRM" runat="server" style="margin:auto"></asp:table>
                            </td>

                          <td class="BoxModality">
                    
                         <h4 style="text-align:center;color:darkblue">SENO</h4>
                              <asp:table ID="tableSeno" runat="server" style="margin:auto"></asp:table>
                   
                         </td>

                               <td class="BoxModality">
                   
                         <h4 style="text-align:center;color:darkblue">MN</h4>
                                   <asp:table ID="tableMN" runat="server" style="margin:auto"></asp:table>
                   

                                   </td>
                            <td class="BoxModality">
                    
                         <h4 style="text-align:center;color:darkblue">ANGIO</h4>
                                <asp:table ID="tableXA" runat="server" style="margin:auto"></asp:table>
                   

                               </td>

                               <td class="BoxModality">
                   
                         <h4 style="text-align:center;color:darkblue">Secrétaires</h4>
                                   <asp:table ID="tableSec" runat="server" style="margin:auto">

                                    
                                   </asp:table>
                                     

                               </td>

                               <td class="BoxModality">
                  
                         <h4 style="text-align:center;color:darkblue">No Prest</h4>
                                   <asp:table ID="tableNOP" runat="server" style="margin:auto"></asp:table>
                  
                                   </td>
                  
                            <td style="margin:auto" >
                   
                         <asp:Button id="RunNewTimat" runat="server" OnClick="RunNewTimat_Click" Text="New Timat" CssClass="MiniButton"/>
                                </td>
                      </tr>
                          </table>

                    </ContentTemplate>
                          
                                </asp:UpdatePanel>
                    


                
                 </div>

在此之前,我的代码可以在 FrontSide 创建的按钮上运行良好。

非常感谢您的帮助

asp.net aspbutton asyncpostbackerror

评论


答: 暂无答案