2012-09-22 2 views
1

enter image description here데이터 삭제

Label lbl = new Label(); 
lbl.BorderColor = System.Drawing.Color.Black; 
lbl.BorderStyle = BorderStyle.Double; 
lbl.BackColor = System.Drawing.Color.BlanchedAlmond; 
lbl.Text = eventname + "<br/>" + dt + "--" + dt1; 
e.Cell.Controls.Add(lbl); 

btn.Click += new System.EventHandler(this.btnCross_Click); 
e.Cell.Controls.Add(btn); 

public void btnCross_Click(object sender, EventArgs e) 
{ 
    string id = ((Button)sender).ID; 
} 

내 데이터베이스 필드, 이름, eventstartdate는 eventenddate

어떻게이 내 달력 컨트롤이 ID를 달성해야하는 UpdatePanel에서 btnCross_Click이 실행되지 않는 이유는 무엇입니까?

+0

, 미래에 코드를 포맷하는 데 시간이 걸릴하시기 바랍니다. 질문 텍스트 바로 아래에 미리보기가 있습니다. 독자가 질문을 쉽게 따르도록하는 작은 변화입니다. – Patrick

+0

'e'가 무엇인지 알려주시겠습니까? 아마도 'ASP : 테이블'일까요? – Patrick

+0

괜찮아요. 다음에 신경 써서 죄송합니다. – vini

답변

1

아래 코드의 생각은 Page_Load 메서드에 필요한 모든 컨트롤을 만들고 appr 불투명 용기.

<asp:Calendar runat="server" ID="Calendar1" Width="800px" Height="700px" BackColor="White" 
    BorderColor="Black" DayNameFormat="Shortest" Font-Names="Times New Roman" Font-Size="10pt" 
    ForeColor="Black" NextPrevFormat="FullMonth" TitleFormat="Month" ShowGridLines="true" > 
    <DayHeaderStyle BackColor="#CCCCCC" Font-Bold="True" Font-Size="7pt" ForeColor="#333333" 
     Height="10pt" /> 
    <DayStyle Width="14%" /> 
    <NextPrevStyle Font-Size="8pt" ForeColor="White" /> 
    <OtherMonthDayStyle ForeColor="#999999" /> 
    <SelectedDayStyle BackColor="#CC3333" ForeColor="White" /> 
    <SelectorStyle BackColor="#CCCCCC" Font-Bold="True" Font-Names="Verdana" Font-Size="8pt" 
     ForeColor="#333333" Width="1%" /> 
    <TitleStyle BackColor="Black" Font-Bold="True" Font-Size="13pt" ForeColor="White" 
     Height="14pt" /> 
    <TodayDayStyle BackColor="#CCCC99" /> 
</asp:Calendar> 
<asp:PlaceHolder runat="server" ID="PlaceHolder1"></asp:PlaceHolder> 

숨김 코드 :

private Dictionary<DateTime, List<Control>> DayControls = new Dictionary<DateTime, List<Control>>(); 

protected void Page_Init(object sender, EventArgs e) 
{ 
    Calendar1.DayRender += new DayRenderEventHandler(Calendar1_DayRender); 
} 

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     if(Calendar1.VisibleDate == DateTime.MinValue) 
     { 
      Calendar1.VisibleDate = DateTime.Today; 
     } 
    } 
    FillDayControls(Calendar1.VisibleDate); 
} 

void Calendar1_DayRender(object sender, DayRenderEventArgs e) 
{ 
    if (!DayControls.ContainsKey(e.Day.Date)) return; 

    foreach (var control in DayControls[e.Day.Date]) 
    { 
     control.Parent.Controls.Remove(control); 

     e.Cell.Controls.Add(control); 

     if (control is Button) 
     { 
      ClientScript.RegisterForEventValidation(control.UniqueID); 
     } 
    } 
} 

private void FillDayControls(DateTime dateTime) 
{ 
    var firstMonthDate = new DateTime(dateTime.Year, dateTime.Month, 1); 

    var calendarFirstWeekDay = Calendar1.FirstDayOfWeek == FirstDayOfWeek.Default 
           ? CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek 
           : (DayOfWeek) (int) Calendar1.FirstDayOfWeek; 

    var currentDate = firstMonthDate.DayOfWeek == calendarFirstWeekDay ? firstMonthDate.AddDays(-7) : firstMonthDate.AddDays((int)firstMonthDate.DayOfWeek * -1); 
    var lastDate = currentDate.AddDays(41); 

    do 
    { 
     var events = GetCalendarEvents(currentDate); 
     if (events.Count > 0) 
     { 
      DayControls.Add(currentDate, new List<Control>()); 
     } 

     foreach (var calendarEvent in events) 
     { 
      var lbl = new Label 
          { 
           BorderColor = System.Drawing.Color.Black, 
           BorderStyle = BorderStyle.Double, 
           BackColor = System.Drawing.Color.BlanchedAlmond, 
           Text = string.Format("{0}<br />{1:hh:mm:ss tt} -- {2:hh:mm:ss tt}", calendarEvent.Title, calendarEvent.Start, calendarEvent.End) 
          }; 
      DayControls[currentDate].Add(lbl); 
      PlaceHolder1.Controls.Add(lbl); 

      var btn = new Button 
          { 
           Text = "x", 
           ID = "DeleteEvent_" + calendarEvent.Id, 
           CommandName = "DeleteEvent", 
           CommandArgument = calendarEvent.Id 
          }; 

      DayControls[currentDate].Add(btn); 
      PlaceHolder1.Controls.Add(btn); 
      btn.Click += new EventHandler(btn_Click); 

     } 

     currentDate = currentDate.AddDays(1); 
    } while (currentDate <= lastDate); 
} 

private void btn_Click(object sender, EventArgs e) 
{ 
    var eventId = ((Button)sender).CommandArgument; 
} 

private List<CalendarEvent> GetCalendarEvents(DateTime dateTime) 
{ 
    return new List<CalendarEvent>{ 
        new CalendarEvent 
        { 
         Id = string.Format("{0:MMMddyyyy}Event" ,dateTime), 
         Start = dateTime.Date.AddHours(10), 
         End = dateTime.Date.AddHours(12), 
         Title = string.Format("{0:dd/MM} meeting", dateTime) 
        }}; 
} 

CalendarEvent 클래스 스텁 :

public class CalendarEvent 
{ 
    public string Id { get; set; } 

    public DateTime Start { get; set; } 

    public DateTime End { get; set; } 

    public string Title { get; set; } 
}