or
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="ISEMAILAPP.WebForm2" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html
xmlns
=
"http://www.w3.org/1999/xhtml"
>
<
head
runat
=
"server"
>
<
title
></
title
>
</
head
>
<
body
>
<
form
id
=
"form1"
runat
=
"server"
>
<
telerik:RadScriptManager
ID
=
"RadScriptManager1"
runat
=
"server"
>
<
Scripts
>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.Core.js"
>
</
asp:ScriptReference
>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.jQuery.js"
>
</
asp:ScriptReference
>
<
asp:ScriptReference
Assembly
=
"Telerik.Web.UI"
Name
=
"Telerik.Web.UI.Common.jQueryInclude.js"
>
</
asp:ScriptReference
>
</
Scripts
>
</
telerik:RadScriptManager
>
<
telerik:RadAjaxPanel
ID
=
"RadAjaxPanel1"
runat
=
"server"
>
<
telerik:RadListView
ID
=
"messagelist"
ItemPlaceholderID
=
"itemPlaceholder"
runat
=
"server"
onitemcommand
=
"messagelist_ItemCommand"
InsertItemPosition
=
"LastItem"
>
<
LayoutTemplate
>
<
table
id
=
"Table1"
runat
=
"server"
>
<
tr
id
=
"Tr1"
runat
=
"server"
>
<
th
> </
th
>
<
th
>Start</
th
>
<
th
>End</
th
>
<
th
>Subject</
th
>
<
th
>Message</
th
>
</
tr
>
<
tr
runat
=
"server"
id
=
"itemPlaceholder"
></
tr
>
</
table
>
</
LayoutTemplate
>
<
EmptyDataTemplate
>
<
table
id
=
"Table1"
runat
=
"server"
>
<
tr
id
=
"Tr1"
runat
=
"server"
>
<
th
> </
th
>
<
th
>emptyStart</
th
>
<
th
>End</
th
>
<
th
>Subject</
th
>
<
th
>Message</
th
>
</
tr
>
<
tr
runat
=
"server"
id
=
"itemPlaceholder"
></
tr
>
</
table
>
</
EmptyDataTemplate
>
<
ItemTemplate
>
<
tr
>
<
td
><
asp:Button
ID
=
"btnEdit"
runat
=
"server"
Text
=
"Edit"
CommandName
=
"Edit"
AutoPostback
=
"true"
></
asp:Button
> <
telerik:RadButton
ID
=
"deletebutton"
runat
=
"server"
Text
=
"Delete"
AutoPostBack
=
"true"
CommandName
=
"Delete"
> </
telerik:RadButton
></
td
>
<
td
>
<
asp:Label
runat
=
"server"
ID
=
"startdate"
Text='<%# Eval("Start") %>' />
</
td
>
<
td
>
<
asp:Label
runat
=
"server"
ID
=
"enddate"
Text='<%# Eval("End") %>' />
</
td
>
<
td
>
<
asp:Label
runat
=
"server"
ID
=
"subjectline"
Text='<%# Eval("Subject") %>' />
</
td
>
<
td
>
<
asp:Label
runat
=
"server"
ID
=
"messageline"
Text='<%# Eval("Message") %>' />
</
td
>
</
tr
>
</
ItemTemplate
>
<
EditItemTemplate
>
<
tr
style
=
"background-color:Gray;"
>
<
td
><
telerik:RadButton
ID
=
"savebutton"
runat
=
"server"
Text
=
"Save"
AutoPostBack
=
"true"
CommandName
=
"Update"
> </
telerik:RadButton
>
<
asp:Button
ID
=
"BtnCancel"
runat
=
"server"
Text
=
"Cancel"
CommandName
=
"Cancel"
CausesValidation
=
"false"
Width
=
"70px"
/></
td
>
<
td
>
<
telerik:RadDateTimePicker
ID
=
"startdate"
runat
=
"server"
SelectedDate='<%# Bind("Start") %>' ></
telerik:RadDateTimePicker
>
</
td
>
<
td
>
<
telerik:RadDateTimePicker
ID
=
"enddate"
runat
=
"server"
SelectedDate='<%# Bind("End") %>' ></
telerik:RadDateTimePicker
>
</
td
>
<
td
>
<
asp:TextBox
ID
=
"subjectline"
runat
=
"server"
Text='<%# Bind("Subject") %>'></
asp:TextBox
>
</
td
>
<
td
>
<
telerik:RadEditor
Content='<%# Bind("Message") %>' ID="messageline" runat="server" ></
telerik:RadEditor
>
</
td
>
</
tr
>
</
EditItemTemplate
>
<
InsertItemTemplate
>
<
tr
>
<
td
><
telerik:RadButton
ID
=
"insertbutton"
runat
=
"server"
Text
=
"Add New"
AutoPostBack
=
"true"
CommandName
=
"Insert"
> </
telerik:RadButton
>
<
asp:Button
ID
=
"BtnCancel"
runat
=
"server"
Text
=
"Cancel"
CommandName
=
"Cancel"
CausesValidation
=
"false"
Width
=
"70px"
/></
td
>
<
td
>
<
telerik:RadDateTimePicker
ID
=
"startdate"
runat
=
"server"
></
telerik:RadDateTimePicker
>
</
td
>
<
td
>
<
telerik:RadDateTimePicker
ID
=
"enddate"
runat
=
"server"
></
telerik:RadDateTimePicker
>
</
td
>
<
td
>
<
asp:TextBox
ID
=
"subjectline"
runat
=
"server"
></
asp:TextBox
>
</
td
>
<
td
>
<
telerik:RadEditor
ID
=
"messageline"
runat
=
"server"
></
telerik:RadEditor
>
</
td
>
</
tr
>
</
InsertItemTemplate
>
</
telerik:RadListView
>
</
telerik:RadAjaxPanel
>
</
form
>
</
body
>
</
html
>
using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Net.Mail;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
namespace ISEMAILAPP
{
public partial class WebForm2 : System.Web.UI.Page
{
string messageKey = "messages";
protected void Page_Load(object sender, EventArgs e)
{
messagelist.InsertItemPosition = RadListViewInsertItemPosition.LastItem;
if (!Page.IsPostBack)
{
// If the session variable is empty, initialize an
// empty list as the datasource
if (Session[messageKey] == null)
{
Session[messageKey] = new List<
mEvent
>();
}
foreach (RadListViewDataItem item in messagelist.Items)
{
item.Edit = true;
}
BindList();
}
}
private void BindList()
{
messagelist.DataSource = null;
messagelist.DataSource = (List<
mEvent
>)Session[messageKey];
messagelist.InsertItemPosition = RadListViewInsertItemPosition.LastItem;
messagelist.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{/*
DateTime start = this.start.SelectedDate.Value;
DateTime end = this.end.SelectedDate.Value;
string s = subject.Text;
string m = message.Content;
// Grab the current list from the session and add the
// currently selected DropDown item to it.
List<
mEvent
> messages = (List<
mEvent
>)Session[messageKey];
messages.Add(new mEvent(start,end,s,m));
subject.Text = string.Empty;
message.Content = string.Empty;
this.start.Clear();
this.end.Clear();
BindList();
* */
}
private void UpdateBindList()
{
// messagelist.DataSource = null;
messagelist.DataSource = (List<
mEvent
>)Session[messageKey];
messagelist.InsertItemPosition = RadListViewInsertItemPosition.LastItem;
messagelist.Rebind();
}
// Basic author object, used for databinding
private class mEvent
{
public DateTime Start { get; set; }
public DateTime End { get; set; }
public String Subject { get; set; }
public String Message { get; set; }
public mEvent(DateTime start, DateTime end, string subject, string message)
{
Start = start;
End = end;
Subject = subject;
Message = message;
}
}
private string PopulateBody(string AppliesTo, string MtypeColor, string MtypeText, string Message)
{
var subjects = new List<
string
>();
var messages = new List<
string
>();
string body = string.Empty;
string dateString = DateTime.Today.ToShortDateString();
foreach (RadListViewDataItem item in messagelist.Items)
{
string currSubject = string.Empty;
string currMessage = string.Empty;
Label subject = (Label)item.FindControl("subjectline");
Label message = (Label)item.FindControl("messageline");
currSubject = subject.Text;
currMessage = message.Text;
subjects.Add(currSubject);
messages.Add(currMessage);
}
using (StreamReader reader = new StreamReader(Server.MapPath("~/emailtemplate.htm")))
{
body = reader.ReadToEnd();
}
body = body.Replace("{CurrentDate}", dateString);
//body = body.Replace("{AppliesTo}", AppliesTo);
// body = body.Replace("{MtypeColor}", MtypeColor);
//body = body.Replace("{MtypeText}", MtypeText);
body = body.Replace("{Message}", Message);
return body;
}
private void SendHtmlFormattedEmail(string recepientEmail, string subject, string body)
{
using (MailMessage mailMessage = new MailMessage())
{
mailMessage.From = new MailAddress(ConfigurationManager.AppSettings["UserName"]);
mailMessage.Subject = subject;
mailMessage.Body = body;
mailMessage.IsBodyHtml = true;
mailMessage.To.Add(new MailAddress(recepientEmail));
SmtpClient smtp = new SmtpClient();
smtp.Host = ConfigurationManager.AppSettings["Host"];
// smtp.EnableSsl = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableSsl"]);
System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
// NetworkCred.UserName = ConfigurationManager.AppSettings["UserName"];
//NetworkCred.Password = ConfigurationManager.AppSettings["Password"];
smtp.UseDefaultCredentials = true;
//smtp.Credentials = NetworkCred;
smtp.Port = int.Parse(ConfigurationManager.AppSettings["Port"]);
smtp.Send(mailMessage);
}
}
protected void SendEmail(object sender, EventArgs e)
{
/* string AppliesTo = TextBox2.Text;
string Message = RadEditor1.Content;
string MtypeColor = "#008AB0";
string MtypeText = "General Broadcast";
string Subject = TextBox1.Text;
string body = this.PopulateBody(AppliesTo,MtypeColor, MtypeText, Message);
this.SendHtmlFormattedEmail("xxxxx", Subject, body);
* */
}
protected void messagelist_ItemCommand(object sender, RadListViewCommandEventArgs e)
{
if (e.CommandName == RadListView.EditCommandName)
{
}
else if (e.CommandName == RadListView.CancelCommandName)
{
//cancel action
}
else if (e.CommandName == RadListView.UpdateCommandName)
{
//Perform the update
RadListViewEditableItem curItem = (RadListViewEditableItem)e.ListViewItem;
int curItemIndex = curItem.DisplayIndex;
RadDateTimePicker dtpStart = (RadDateTimePicker)curItem.FindControl("startdate");
RadDateTimePicker dtpEnd = (RadDateTimePicker)curItem.FindControl("enddate");
TextBox txtBoxSubject = (TextBox)curItem.FindControl("subjectline");
RadEditor reMessage = (RadEditor)curItem.FindControl("messageline");
DateTime start = dtpStart.SelectedDate.Value;
DateTime end = dtpEnd.SelectedDate.Value;
string s = txtBoxSubject.Text;
string m = reMessage.Content;
// Grab the current list from the session and add the
// currently selected DropDown item to it.
List<
mEvent
> messages = (List<
mEvent
>)Session[messageKey];
messages[curItemIndex] = new mEvent(start, end, s, m);
// messages.Add(new mEvent(start, end, s, m));
// subject.Text = string.Empty;
// message.Content = string.Empty;
// this.start.Clear();
// this.end.Clear();
UpdateBindList();
}
else if (e.CommandName == RadListView.PerformInsertCommandName)
{
//Perform the insert
RadListViewEditableItem curItem = (RadListViewEditableItem)e.ListViewItem;
int curItemIndex = curItem.DisplayIndex;
RadDateTimePicker dtpStart = (RadDateTimePicker)curItem.FindControl("startdate");
RadDateTimePicker dtpEnd = (RadDateTimePicker)curItem.FindControl("enddate");
TextBox txtBoxSubject = (TextBox)curItem.FindControl("subjectline");
RadEditor reMessage = (RadEditor)curItem.FindControl("messageline");
DateTime start = dtpStart.SelectedDate.Value;
DateTime end = dtpEnd.SelectedDate.Value;
string s = txtBoxSubject.Text;
string m = reMessage.Content;
// Grab the current list from the session and add the
// currently selected DropDown item to it.
List<
mEvent
> messages = (List<
mEvent
>)Session[messageKey];
messages[curItemIndex] = new mEvent(start, end, s, m);
// messages.Add(new mEvent(start, end, s, m));
// subject.Text = string.Empty;
// message.Content = string.Empty;
// this.start.Clear();
// this.end.Clear();
BindList();
}
else if (e.CommandName == RadListView.DeleteCommandName)
{
//Perform the Delete
RadListViewEditableItem curItem = (RadListViewEditableItem)e.ListViewItem;
int curItemIndex = curItem.DisplayIndex;
// Grab the current list from the session and add the
// currently selected DropDown item to it.
List<
mEvent
> messages = (List<
mEvent
>)Session[messageKey];
messages.RemoveAt(curItemIndex);
UpdateBindList();
}
}
}
}
<
telerik:GridTemplateColumn
HeaderText
=
"Report Period"
UniqueName
=
"ReportPeriodName"
Visible
=
"False"
Display
=
"False"
>
<
EditItemTemplate
>
<
asp:DropDownList
runat
=
"server"
ID
=
"ddlReportPeriod"
AppendDataBoundItems
=
"True"
>
<
asp:ListItem
Text
=
"-- Select Reporting Period --"
Value
=
""
/>
</
asp:DropDownList
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:RadGrid
ID
=
"RadGrid_MobileCheckList"
runat
=
"server"
AutoGenerateColumns
=
"False"
GridLines
=
"Vertical"
AllowMultiRowEdit
=
"true"
HeaderStyle-CssClass
=
"radGridHeaderStyle"
onitemdatabound
=
"RadGrid_MobileCheckList_ItemDataBound"
onprerender
=
"RadGrid_MobileCheckList_PreRender"
onitemcommand
=
"RadGrid_MobileCheckList_ItemCommand"
>
<
MasterTableView
DataKeyNames
=
"MobileChecklist_ID, MobileResponseType_ID, MobileResponse_ID"
EditMode
=
"Batch"
CommandItemDisplay
=
"Bottom"
>
<
Columns
>
<
telerik:GridBoundColumn
AllowSorting
=
"true"
HeaderStyle-Width
=
"20%"
ItemStyle-CssClass
=
"radGridItemStyle"
ReadOnly
=
"true"
DataField
=
"Task"
HeaderText
=
"Task"
></
telerik:GridBoundColumn
>
<
telerik:GridTemplateColumn
HeaderStyle-Width
=
"10%"
ItemStyle-CssClass
=
"radGridItemStyle"
HeaderText
=
"Response"
UniqueName
=
""
>
<
EditItemTemplate
>
<
telerik:RadComboBox
runat
=
"server"
ID
=
"MobileChecklistGrid_RadComboBox_Response"
ondatabound
=
"MobileChecklistGrid_RadComboBox_Response_DataBound"
Width
=
"100%"
DataTextField
=
"Response"
DataValueField
=
"MobileResponse_ID"
></
telerik:RadComboBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridTemplateColumn
HeaderStyle-Width
=
"70%"
ItemStyle-CssClass
=
"radGridItemStyle"
HeaderText
=
"Comment"
>
<
EditItemTemplate
>
<
telerik:RadTextBox
runat
=
"server"
ID
=
"MobileChecklistGrid_TextBox_Comment"
Width
=
"100%"
Text='<%# Eval("Comment") %>'></
telerik:RadTextBox
>
</
EditItemTemplate
>
</
telerik:GridTemplateColumn
>
<
telerik:GridEditCommandColumn
UniqueName
=
"EditCommandColumn"
/>
</
Columns
>
<
CommandItemTemplate
>
<
asp:Button
runat
=
"server"
ID
=
"UpdateAll"
Text
=
"Update All"
CommandName
=
"UpdateAll"
/>
</
CommandItemTemplate
>
</
MasterTableView
>
</
telerik:RadGrid
>
protected
void
RadGrid_CheckList_ItemCommand(
object
sender, Telerik.Web.UI.GridCommandEventArgs e)
{
if
(e.CommandName ==
"RowClick"
)
{
GridDataItem item = (GridDataItem)e.Item;
string
checklistId = item[
"Checklist_ID"
].Text;
DataTable table = _domain.GetMobileCheckListDetailsByCheckListId(checklistId);
RadGrid_MobileCheckList.DataSource = table;
RadGrid_MobileCheckList.DataBind();
}
}
protected
void
RadGrid_MobileCheckList_ItemDataBound(
object
sender, GridItemEventArgs e)
{
if
(e.Item
is
GridDataItem)
{
if
(e.Item
is
GridEditableItem && e.Item.IsInEditMode)
{
GridEditableItem item = (GridEditableItem)e.Item;
RadComboBox rcb = item.FindControl(
"MobileChecklistGrid_RadComboBox_Response"
)
as
RadComboBox;
if
(rcb !=
null
)
{
int
? responseTypeId = !
string
.IsNullOrEmpty(item.GetDataKeyValue(
"MobileResponseType_ID"
).ToString()) ?
int
.Parse(item.GetDataKeyValue(
"MobileResponseType_ID"
).ToString()) : (
int
?)
null
;
if
(responseTypeId !=
null
)
{
DataTable table = _domain.GetMobileResponsesByResponseTypeID(responseTypeId);
comboBox.DataSource = table;
comboBox.DataValueField = table.Columns[valueField].ToString();
comboBox.DataTextField = table.Columns[textField].ToString();
comboBox.DataBind();
comboBox.SelectedIndex = -1;
}
}
}
}
}
protected
void
RadGrid_MobileCheckList_PreRender(
object
sender, EventArgs e)
{
foreach
(GridDataItem dataItem
in
RadGrid_MobileCheckList.Items)
{
dataItem.Edit =
true
;
}
RadGrid_MobileCheckList.Rebind();
}
protected
void
RadGrid_MobileCheckList_ItemCommand(
object
sender, GridCommandEventArgs e)
{
if
(e.CommandName ==
"UpdateAll"
)
{
foreach
(GridEditableItem editedItem
in
RadGrid_MobileCheckList.EditItems)
{
Hashtable newValues =
new
Hashtable();
Hashtable oldValues =
new
Hashtable();
oldValues = (Hashtable)editedItem.SavedOldValues;
e.Item.OwnerTableView.ExtractValuesFromItem(newValues, editedItem);
editedItem.ExtractValues(newValues);
//I can get the items with something like this:
//But I dont want to update every row everytime, I need to know which items have been actually edited. Something like an isDirty property.
var test = ((RadComboBox)editedItem.Cells[3].Controls[1]).SelectedItem;
var test2 = ((RadTextBox)editedItem.Cells[4].Controls[1]).Text;
}
}
}