2014-04-24 4 views
-2

동적 인 table.Now를 만드는 중입니다. 내 상태에 따라 링크 셀을 테이블 셀에 추가하지만 내 링크 버튼의 클릭 이벤트는 작동하지 않습니다. 왜 작동하지 않는지, 어떤 오류도 보이지 않는 이유가 아닙니다. 다음 당신이 버튼을 추가 만에 이벤트 리스너 바인딩되지 않습니다처럼링크 버튼 클릭 이벤트가 작동하지 않습니다.

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 = ""; 
} 
+0

마지막 링크 버튼이 제대로 작동하고 있어야한다고 생각합니다. 확인해 주시겠습니까? –

+0

도 작동하지 않습니다 – rupinder18

+0

'lnkevent.Click + = new RoutedEventHandler (lnkevent_OnClick);을 사용해 보셨습니까? – Dumisani

답변

2

가 소리 내 코드입니다. asp.net에서 이벤트 바인딩을 수행하는 방법에 대해 많이 알지 못합니다.하지만 문제가 될 수 있습니다.

이 링크가 도움이 될 수 있습니까?

asp.net dynamically button with event handler

+0

링크 버튼을 추가하는 대신 코드를 확인한 다음 그에 맞게 고맙습니다. – rupinder18

+0

위의 링크에서 제공되는 솔루션을 읽었지 만 저를 위해 작동하지 않습니다. 다른 것을 제안하십시오. – rupinder18

관련 문제