【问题标题】:Why doesn't my Event Handler fire when I click on a radio button?为什么当我单击单选按钮时我的事件处理程序没有触发?
【发布时间】:2023-02-03 05:53:10
【问题描述】:

我在 HTML 中有一个包含 8 列的表格。标题行在 HTML 中手动填充,如下所示。

            <asp:Table ID="courseTable" runat="server" CssClass="table table-lg" style="color:white">
                    <asp:TableRow>   
                        <asp:TableCell><b>Choose One</b></asp:TableCell>
                        <asp:TableCell><b>Course Name and Title</b></asp:TableCell>
                        <asp:TableCell Width="101"><b>Course Dates</b></asp:TableCell>
                        <asp:TableCell><b>Building</b></asp:TableCell>
                        <asp:TableCell><b>Meeting Times</b></asp:TableCell>                        
                        <asp:TableCell><b>Days of Week</b></asp:TableCell>                     
                        <asp:TableCell><b>Location</b></asp:TableCell>
                        <asp:TableCell><b>Term</b></asp:TableCell>
                    </asp:TableRow>
                </asp:Table>

后面的代码用于填充更多行(第一列中有一个单选按钮)

                //Add new row to table
                courseTable.Rows.Add(new TableRow());

                //Add Cells to new rows
                for (int x = 0; x < 10; x++)
                {
                    courseTable.Rows[i + 1].Cells.Add(new TableCell());
                }

                //Create radio button for new row
                RadioButton rdo = new RadioButton();
                rdo.ID = response.Sections[i].ToString();
                rdo.Text = response.Sections[i].ToString();
                rdo.CheckedChanged += rdo_CheckedChanged(rdo, new EventArgs());

                //Add buttons and info to table (add 1 since the titles count as a row)
                courseTable.Rows[i + 1].Cells[0].Controls.Add(rdo);
                courseTable.Rows[i + 1].Cells[1].Text = response.NameTitle[i].ToString();
                courseTable.Rows[i + 1].Cells[2].Text = response.SecDates[i].ToString();
                courseTable.Rows[i + 1].Cells[3].Text = response.BuildingRoom[i].ToString();
                courseTable.Rows[i + 1].Cells[4].Text = response.MeetingTime[i].ToString();
                courseTable.Rows[i + 1].Cells[5].Text = response.Days[i].ToString();
                courseTable.Rows[i + 1].Cells[6].Text = response.Location[i].ToString();
                courseTable.Rows[i + 1].Cells[7].Text = response.Term[i].ToString();
            }

        }

        protected EventHandler rdo_CheckedChanged(object sender, EventArgs e)
        {
            System.Windows.Forms.MessageBox.Show("clicked"); //test message box 
            cscId.Value = (sender as RadioButton).ID;

            return null;
        }

但事件处理程序仅在单选按钮动态添加到每一行时触发。当用户单击其中一个单选按钮时,事件处理程序永远不会触发。感谢您提供任何信息。

添加了事件处理程序中的测试消息框来验证这一点

【问题讨论】:

    标签: button events radio-button handler


    【解决方案1】:

    仅适用于可能遇到此问题的任何其他人...... 事件未触发的原因是单选按钮需要设置 AutoPostBack="true"。但是,不幸的是,回发弄乱了屏幕,因为表格是动态创建的。 我猜我将不得不使用 GridView 控件。 :(

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-18
      • 1970-01-01
      相关资源
      最近更新 更多