-
Categories
- ASP.NET (2)
- C# (4)
- Development (1)
- Kentico CMS (1)
- LINQ (1)
- SharePoint 2010 (7)
- Tools (1)
Dev Links
Category Archive: ASP.NET
Subcategories: No categories
How To: Communication between UserControls
Problem : Allow one UserControl(DepartmentSelectorControl) to communicate /pass a value to another UserControl which will in turn
using System;
using System.Linq;
using System.Web.UI.WebControls;
public partial class Controls_DepartmentSelectorControl : System.Web.UI.UserControl
{
private string selecteddepartment = string.Empty;
public string SelectedDepartment
{
get { return selecteddepartment; }
set
{
selecteddepartment = value;
selecteddepartment = uxDepartments.SelectedItem.Text;
}
}
//Create eventhandler to be consumed by the host page
public event EventHandler SelectDepartment;
protected void Page_Load(object sender, EventArgs e)
{
using (var context = new AdventureWorksEntities())
{
var departments = context.Departments.Select(p => new Department
{
DepartmentID = p.DepartmentID,
GroupName = p.GroupName,
Name = p.Name,
ModifiedDate = p.ModifiedDate
});
foreach (var department in departments)
{
var dItem = new ListItem { Text = department.Name, Value = department.DepartmentID.ToString() };
uxDepartments.Items.Add(dItem);
}
}
}
protected void uxDepartments_SelectedIndexChanged(object sender, EventArgs e)
{
//Set the member variable to what the user has selected
selecteddepartment = uxDepartments.SelectedItem.Text;
if(SelectDepartment != null)
{
//Event is raised and corresponding eventhandler is called to respond to the event
SelectDepartment(this, new EventArgs());
}
}
}
How to generate an iCalendar file
Problem : Generate a iCalendar file which will trigger a calendar application (eg. outlook) to open with an updated event.
The iCalendar file is a fairly common feature which most developers add to enable users to add events to their personalized calendars via a custom calendar application
Solution : Create a web handler which will create a plain text file with the ‘ics’ extension.
using System;
using System.Web;
namespace MyNamespace
{
public class iCalendar: IHttpHandler
{
public bool IsReusable
{
get
{
return true;
}
}
string DateFormat
{
get
{
return "yyyyMMddTHHmmssZ"; // 20060215T092000Z
}
}
public void ProcessRequest(HttpContext context)
{
DateTime startDate = DateTime.Now.AddDays(5);
DateTime endDate = startDate.AddMinutes(35);
string organizer = "foo@bar.com";
string location = "My House";
string summary = "My Event";
string description = "Please come to\\nMy House";
context.Response.ContentType="text/calendar";
context.Response.AddHeader("Content-disposition", "attachment; filename=appointment.ics");
context.Response.Write("BEGIN:VCALENDAR");
context.Response.Write("\nVERSION:2.0");
context.Response.Write("\nMETHOD:PUBLISH");
context.Response.Write("\nBEGIN:VEVENT");
context.Response.Write("\nORGANIZER:MAILTO:" + organizer);
context.Response.Write("\nDTSTART:" + startDate.ToUniversalTime().ToString(DateFormat));
context.Response.Write("\nDTEND:" + endDate.ToUniversalTime().ToString(DateFormat));
context.Response.Write("\nLOCATION:" + location);
context.Response.Write("\nUID:" + DateTime.Now.ToUniversalTime().ToString(DateFormat) + "@mysite.com");
context.Response.Write("\nDTSTAMP:" + DateTime.Now.ToUniversalTime().ToString(DateFormat));
context.Response.Write("\nSUMMARY:" + summary);
context.Response.Write("\nDESCRIPTION:" + description);
context.Response.Write("\nPRIORITY:5");
context.Response.Write("\nCLASS:PUBLIC");
context.Response.Write("\nEND:VEVENT");
context.Response.Write("\nEND:VCALENDAR");
context.Response.End();
}
}
}