c# - Asp.net Calendar How to -
i have question project working on calendar can put comment special day / year
i'm using atm asp.net calendar control.
here image of idea:
here markup code:
<%@ page language="c#" autoeventwireup="true" masterpagefile="~/calender.master" codefile="calender.aspx.cs" inherits="_default" %> <asp:content id="headercontent" runat="server" contentplaceholderid="headcontent"> </asp:content> <asp:content id="bodycontent" runat="server" contentplaceholderid="maincontent"> <form id="form1" runat="server"> <asp:scriptmanager id="sm1" runat="server" /> <asp:updatepanel id="up1" runat="server"> <contenttemplate> <asp:calendar id="calendar1" showgridlines="true" cellpadding="15" runat="server" ondayrender="calendar1_dayrender" onselectionchanged="calendar1_selectionchanged "> </asp:calendar> <br /> <asp:formview id="formview1" runat="server" allowpaging="true" datakeynames="date" datasourceid="todosrc" defaultmode="edit"> <edititemtemplate> <asp:label id="lbltodo" runat="server" associatedcontrolid="txttodo" text="afspraak:" /> <br /> <asp:textbox id="txttodo" runat="server" textmode="multiline" columns="30" rows="5" text="<%# bind('todo') %>"></asp:textbox> <br /><br /> <asp:linkbutton id="butupdate" runat="server" text="update" commandname="update" /> </edititemtemplate> <insertitemtemplate> <asp:label id="lbltodo" runat="server" text="toevoegen:" associatedcontrolid="txttodo" /> <br /> <asp:textbox id="txttodo" runat="server" text="<%# bind('todo') %>" textmode="multiline" columns="30" rows="5" /> <br /> <asp:button id="butinsert" runat="server" text="add" commandname="insert" /> </insertitemtemplate> </asp:formview> <br /> <asp:button id="butaddnew" runat="server" text="toevoegen" onclick="butaddnew_click" /> </contenttemplate> </asp:updatepanel> <selectparameters> <asp:sqldatasource id="todosrc" runat="server" connectionstring="<%$ connectionstrings:stefan %>" deletecommand="delete calender date=@date" insertcommand="insert calender (date,todo) values (@date,@todo)" selectcommand="select * calender date=@date" updatecommand="update calender set todo=@todo date=@date"> <selectparameters> <asp:controlparameter name="date" controlid="calendar1" propertyname="selecteddate" /> </selectparameters> <insertparameters> <asp:controlparameter name="date" controlid="calendar1" propertyname="selecteddate" /> </insertparameters> </asp:sqldatasource> <asp:sqldatasource id="calendarsrc" runat="server" connectionstring="<%$ connectionstrings:stefan %>" selectcommand="select date calender"></asp:sqldatasource> </form> </asp:content>
and here codebehind cs file
using system; using system.configuration; using system.data; using system.linq; using system.web; using system.web.security; using system.web.ui; using system.web.ui.htmlcontrols; using system.web.ui.webcontrols; using system.web.ui.webcontrols.webparts; using system.data.sqlclient; using system.collections; public partial class _default : system.web.ui.page { dataview todo = new dataview(); protected void page_load(object sender, eventargs e) { if (calendar1.selecteddate == datetime.minvalue) calendar1.selecteddate = calendar1.todaysdate; } void page_prerender() { todo = (dataview)calendarsrc.select(datasourceselectarguments.empty); todo.sort = "date"; } protected void calendar1_dayrender(object sender, dayrendereventargs e) { if (todo.findrows(e.day.date).length > 0) e.cell.backcolor = system.drawing.color.aqua; } protected void calendar1_selectionchanged(object sender, eventargs e) { formview1.changemode(formviewmode.edit); } protected void butaddnew_click(object sender, eventargs e) { formview1.changemode(formviewmode.insert); } }
do want text directly in cell of target day?
use ondayrender method have add literal control:
protected void calendar1_dayrender(object sender, dayrendereventargs e) { if (todo.findrows(e.day.date).length > 0) e.cell.backcolor = system.drawing.color.aqua; if (e.day.date.day == 18) e.cell.controls.add(new literalcontrol("<br />test show on calendar.")); }
good luck,
patrick
Comments
Post a Comment