Я создаю кнопку динамически, используя для цикла, и я хочу получить текст любой кнопки, которую я нажимаю и отображаю на этикетке. Я пробовал следующий код, который динамически создает кнопки и получает недели месяца при нажатии кнопки поиска. При нажатии на кнопку она не дает никакого ответа и doees не вызвать событие, созданное:Кнопка создана динамически, но созданное для них событие не срабатывает
C#
protected void _btnFind_Click(object sender, EventArgs e)
{
int month = Convert.ToInt32(_cmbMonths.SelectedValue);
int year = Convert.ToInt32(_cmbYears.SelectedValue);
var cal = System.Globalization.CultureInfo.CurrentCulture.Calendar;
IEnumerable<int> daysInMonth = Enumerable.Range(1, cal.GetDaysInMonth(year, month));
List<Tuple<int, DateTime, DateTime>> listOfWorkWeeks = daysInMonth
.Select(day => new DateTime(year, month, day))
.GroupBy(d => cal.GetWeekOfYear(d, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday))
.Select(g => Tuple.Create(g.Key, g.First(), g.Last(d => d.DayOfWeek != DayOfWeek.Saturday && d.DayOfWeek != DayOfWeek.Sunday)))
.ToList();
// Item1 = week in year, Item2 = first day, Item3 = last working day
int weekNum = 1;
foreach (var weekGroup in listOfWorkWeeks)
{
//lnk.Text = "Week " + weekNum;
Button lnk = new Button();
lnk.Text = "Week " + weekNum++ + " (" + System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month) +
" " + weekGroup.Item2.Day + " to " +
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(month) + " " +
weekGroup.Item3.Day + ")";
lnk.Click += new EventHandler(lnk_Click);
Panel1.Controls.Add(lnk);
Panel1.Controls.Add(new LiteralControl("<br/><br/>"));
}
}
void lnk_Click(object sender, EventArgs e)
{
Button but = sender as Button;
Label1.Text = but.Text;
}
Aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
Year <asp:DropDownList ID="_cmbYears" runat="server"></asp:DropDownList>
Month <asp:DropDownList ID="_cmbMonths" runat="server">
<asp:ListItem Value="1">January</asp:ListItem>
<asp:ListItem Value="2">February</asp:ListItem>
<asp:ListItem Value="3">March</asp:ListItem>
<asp:ListItem Value="4">April</asp:ListItem>
<asp:ListItem Value="5">May</asp:ListItem>
<asp:ListItem Value="6">June</asp:ListItem>
<asp:ListItem Value="7">July</asp:ListItem>
<asp:ListItem Value="8">August</asp:ListItem>
<asp:ListItem Value="9">September</asp:ListItem>
<asp:ListItem Value="10">October</asp:ListItem>
<asp:ListItem Value="11">Novermber</asp:ListItem>
<asp:ListItem Value="12">December</asp:ListItem>
</asp:DropDownList>
 <asp:Button ID="_btnFind" runat="server" Text="Find" OnClick="_btnFind_Click"/>
</div>
<br />
<asp:Panel ID="Panel1" runat="server">
</asp:Panel>
<br />
<br />
<b><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label></b>
</form>
</body>
</html>
Как вы узнаете, что он не стреляет? Это может быть важной частью информации. – Ian