我在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;
}
,但是事件处理程序仅在将单选按钮动态添加到每行时触发。当用户单击其中一个单选按钮时,事件处理程序永远不会触发。谢谢你提供的信息。
事件处理程序中的测试消息框被添加以验证此
只是给那些可能有这个问题的人…事件没有触发的原因是单选按钮需要。集。但是,不幸的是,由于表是动态创建的,因此回发会弄乱屏幕。我需要使用GridView控件。(