событие нажатия кнопки ссылки не работает

Я работаю над проектом, в котором я создаю динамическую таблицу. Теперь, в зависимости от моего состояния, я добавляю кнопку ссылки в ячейки таблицы, но событие щелчка моей кнопки ссылки не работает. Я не понимаю, почему он не работает, ни он показывает любую ошибку. Ниже мой код

public void makeCalendar()
{
    tblcalendar.Rows.Clear();
    //for current month
    DateTime startingdate = StartDateOfMonth(DateTime.Now.AddMonths(monthclickedno));
    DateTime enddate = EndDateOfMonth(DateTime.Now.AddMonths(monthclickedno));
    string startingday = startingdate.DayOfWeek.ToString();
    int startingdayno = Convert.ToInt32(startingdate.DayOfWeek);
    string endday = enddate.DayOfWeek.ToString();//like saturday is 6,stating is from monday with 1 and ending is sunday with 7
    int enddayno = Convert.ToInt32(enddate.DayOfWeek);
    //for prevoius month
    DateTime enddateprevious = (EndDateOfMonth(DateTime.Now.AddMonths(monthclickedno)));
    //for next month
    DateTime startingdatenext = StartDateOfMonth(DateTime.Now.AddMonths(1));
    DateTime dtstart=startingdate.AddDays(-(startingdayno+1));
    //sMonthName = "January";
    //int iMonthNo = Convert.ToDateTime("01-" + sMonthName + "-2011").Month; 
    for (int i = 0; i <7;i++)
    {
        TableRow tr = new TableRow();
        for (int j = 0; j < 7;j++ )
        {
            TableCell tc = new TableCell();
            clickablecell ctCell = new clickablecell();
            //tc.ID = idtc.ToString();
            idtc++;
            if(i==0)
            {
                tr.CssClass = "firstrow";
                tc.CssClass = "firstrowcell";
                if (j == 0)
                    tc.Text = "Sun";
                else if (j == 1)
                    tc.Text = "Mon";
                else if (j == 2)
                    tc.Text = "Tue";
                else if (j == 3)
                    tc.Text = "Wed";
                else if (j == 4)
                    tc.Text = "Thu";
                else if (j == 5)
                    tc.Text = "Fri";
                else if (j == 6)
                    tc.Text = "Sat";
                tr.Cells.Add(tc);
            }
            else{
                tc.CssClass = "othercells";
                dtstart=dtstart.AddDays(1);                   
                //if date is single digit like 1,2
                if (dtstart.ToString("dd").Substring(0, (dtstart.ToString("dd").Length)-1) == "0")
                    ctCell.Text = (dtstart.ToString("dd").Substring(1));
                else
                    ctCell.Text = (dtstart.ToString("dd"));
                ctCell.Attributes.Add("onmouseover", "defColor=this.style.backgroundColor;  this.style.backgroundColor='LightGray';");
                ctCell.Attributes.Add("onmouseout", "this.style.backgroundColor=defColor;");
                //ctCell.ID = k.ToString();
                k++;
                ctCell.Click += new clickablecell.ClickEventHandler(textcell_Click);
                //check for events in this date
                DataTable dtevents = checkEvents(dtstart.ToString("dd-MM-yyyy"));
                if (dtevents.Rows.Count != 0)
                {
                    LinkButton lnkevent = new LinkButton();
                    //lnkevent.ClientIDMode ="Static";
                    lnkevent.ID = (i+j).ToString();
                    if (dtevents.Rows.Count == 1)
                    {
                        if (dtevents.Rows[0]["eventtype"].ToString() == "Holiday")
                        {
                            lnkevent.Text = dtevents.Rows[0]["eventtype"].ToString();
                            lnkevent.CssClass = "tcholidaytext";
                            ctCell.CssClass = "tcholidaytext";
                        }
                        else if (dtevents.Rows[0]["eventtype"].ToString() == "Event")
                        {
                            lnkevent.Text = dtevents.Rows[0]["eventtype"].ToString();
                            lnkevent.CssClass = "tceventtext";
                            ctCell.CssClass = "tceventtext";
                        }
                        else
                        {
                            lnkevent.Text = dtevents.Rows[0]["eventtype"].ToString();
                            lnkevent.CssClass = "tcimpdaytext";
                            ctCell.CssClass = "tcimpdaytext";
                        }
                    }
                    else
                    {
                        ctCell.CssClass = "tcmixtext";
                    }
                    //lnkevent.Attributes.Add("onClick", "test();");
                    //lnkevent.Click += lnkevent_OnClick;
                    lnkevent.Click += new EventHandler(lnkevent_OnClick);
                    ctCell.Controls.Add(lnkevent);
                }  
                tr.Cells.Add(ctCell);
            }
            tblcalendar.Rows.Add(tr);
        }
    }
}
 public void lnkevent_OnClick(object sender,EventArgs e)
{
    lblmonthname.Text = "hellooo";
    txttitle.Text = "";
}

person rupinder18    schedule 24.04.2014    source источник
comment
Я думаю, что последняя кнопка ссылки должна работать нормально. Можете ли вы проверить?   -  person Palak.Maheria    schedule 24.04.2014
comment
нет, это не работает даже   -  person rupinder18    schedule 24.04.2014
comment
Вы пробовали использовать lnkevent.Click += new RoutedEventHandler(lnkevent_OnClick);?   -  person Dumisani    schedule 24.04.2014
comment
Нет, я не использовал то, что он будет делать, если я буду его использовать, я раньше не использовал этот обработчик событий, не могли бы вы немного уточнить   -  person rupinder18    schedule 24.04.2014
comment
Он просто добавляет обработчик событий для вашего элемента управления. Я забыл упомянуть, что вам нужно заменить EventArgs e на RoutedEventAgrs e в определении вашего метода.   -  person Dumisani    schedule 24.04.2014
comment
когда я изменил обработчик событий, как вы предложили, он показывает тип ошибки или пространство имен отсутствует   -  person rupinder18    schedule 24.04.2014
comment
Добавьте ссылку на Presentation.Core, затем импортируйте System.Windows   -  person Dumisani    schedule 24.04.2014
comment
позвольте нам продолжить это обсуждение в чате   -  person rupinder18    schedule 24.04.2014
comment
Я предлагаю вам заменить все эти условия if-then-else на case-switch ... ваш код будет более читаемым и легче отлаживать ...   -  person onedevteam.com    schedule 24.04.2014


Ответы (1)


Похоже, вы добавляете кнопку, но не привязываете к ней прослушиватель событий. Я мало знаю о том, как asp.net выполняет привязку событий, но похоже, что это может быть вашей проблемой.

Может эта ссылка поможет?

динамическая кнопка asp.net с обработчиком событий

person sidneydobber    schedule 24.04.2014
comment
Я не добавляю кнопку, вместо этого добавляю кнопку ссылки, пожалуйста, проверьте мой код, а затем предложите соответственно, спасибо - person rupinder18; 24.04.2014
comment
Я прочитал решение, предоставленное по приведенной выше ссылке, но это не сработает для меня, пожалуйста, предложите что-нибудь еще - person rupinder18; 24.04.2014