or
GridExporting event in the code behind of each ASPX page and it works fine. What I am looking to do is set up something more global, such that if any grid is ever exported, add the log entry. It may be more of a general .net overloading/inheritance question but figured I would start here.
<%@ Page Title="" Language="C#" MasterPageFile="~/ControlCenter/MasterAdmin.master" AutoEventWireup="true" CodeFile="ConfigSMTP.aspx.cs" Inherits="ControlCenter_ConfigSMTP" %>
<%@ Register assembly="Telerik.Web.UI" namespace="Telerik.Web.UI" tagprefix="telerik" %>
<%@ register src="~/Controls/EditConfigSMTP.ascx" tagprefix="My" tagname="EditConfigSMTP" %>
<
asp:content
ID
=
"ConfigSMTPHead"
ContentPlaceHolderID
=
"head"
Runat
=
"Server"
>
</
asp:content
>
<
asp:content
ID
=
"ConfigSMTPContent"
ContentPlaceHolderID
=
"BodyContent"
Runat
=
"Server"
>
<
table
style
=
"width:100%;"
>
<
tr
>
<
td
style
=
"width:20%;"
>Edit SMTP Address List</
td
>
<
td
style
=
"width:80%;"
> </
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
>
<
telerik:radajaxmanager
id
=
"ConfigSMTPAjaxManager"
runat
=
"server"
>
<
ajaxsettings
>
<
telerik:ajaxsetting
ajaxcontrolid
=
"ConfigSMTPGrid"
>
<
updatedcontrols
>
<
telerik:ajaxupdatedcontrol
controlid
=
"ConfigSMTPGrid"
loadingpanelid
=
"ConfigSMTPLoadingPanel"
/>
</
updatedcontrols
>
</
telerik:ajaxsetting
>
</
ajaxsettings
>
</
telerik:radajaxmanager
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
>Use the form below to configure the outgoing SMTP address for email.</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
>
<
My:editconfigsmtp
runat
=
"server"
id
=
"EditConfigSMTP"
/>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
style
=
"text-align: center"
>
<
telerik:radajaxloadingpanel
id
=
"ConfigSMTPLoadingPanel"
runat
=
"server"
skin
=
"Default"
>
</
telerik:radajaxloadingpanel
>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
>
<!-- SEARCH RESULTS -->
<
telerik:radgrid
id
=
"ConfigSMTPGrid"
runat
=
"server"
allowsorting
=
"True"
autogeneratecolumns
=
"False"
cellpadding
=
"5"
cellspacing
=
"5"
datasourceid
=
"ConfigSMTPDataSource"
gridlines
=
"None"
width
=
"100%"
onitemdatabound
=
"ConfigSMTPGrid_ItemDataBound"
skin
=
"Metro"
ondeletecommand
=
"ConfigSMTPGrid_DeleteCommand"
oninsertcommand
=
"ConfigSMTPGrid_InsertCommand"
onupdatecommand
=
"ConfigSMTPGrid_UpdateCommand"
onprerender
=
"ConfigSMTPGrid_PreRender"
>
<
mastertableview
datakeynames
=
"ID"
datasourceid
=
"ConfigSMTPDataSource"
>
<
editformsettings
>
<
popupsettings
width
=
"700px"
height
=
"500px"
modal
=
"true"
/>
</
editformsettings
>
<
columns
>
<
telerik:grideditcommandcolumn
uniquename
=
"ConfigSMTPEditCommandColumn"
editimageurl
=
"../Images/edit_icon.gif"
cancelimageurl
=
"../Images/close_delete.gif"
>
</
telerik:grideditcommandcolumn
>
<
telerik:gridboundcolumn
datafield
=
"ID"
datatype
=
"System.Int32"
filtercontrolalttext
=
"Filter ID column"
headertext
=
"ID"
readonly
=
"True"
sortexpression
=
"ID"
uniquename
=
"ID"
visible
=
"False"
>
</
telerik:gridboundcolumn
>
<
telerik:gridboundcolumn
datafield
=
"SMTPServer"
filtercontrolalttext
=
"Filter SMTPServer column"
headertext
=
"SMTP Server"
sortexpression
=
"SMTPServer"
uniquename
=
"SMTPServer"
>
</
telerik:gridboundcolumn
>
<
telerik:gridboundcolumn
datafield
=
"Description"
filtercontrolalttext
=
"Filter Description column"
headertext
=
"Description"
sortexpression
=
"Description"
uniquename
=
"Description"
>
</
telerik:gridboundcolumn
>
<
telerik:gridboundcolumn
datafield
=
"CreateDate"
datatype
=
"System.DateTime"
filtercontrolalttext
=
"Filter CreateDate column"
headertext
=
"Created"
sortexpression
=
"CreateDate"
uniquename
=
"CreateDate"
>
</
telerik:gridboundcolumn
>
<
telerik:gridboundcolumn
datafield
=
"IsDefault"
datatype
=
"System.Byte"
filtercontrolalttext
=
"Filter IsDefault column"
headertext
=
"Default"
sortexpression
=
"IsDefault"
uniquename
=
"IsDefault"
>
<
itemstyle
horizontalalign
=
"Center"
/>
</
telerik:gridboundcolumn
>
</
columns
>
<
editformsettings
usercontrolname
=
"~/Controls/EditConfigSMTP.ascx"
editformtype
=
"WebUserControl"
>
<
editcolumn
uniquename
=
"ConfigSMTPEditCommandColumn"
></
editcolumn
>
</
editformsettings
>
</
mastertableview
>
</
telerik:radgrid
>
<
asp:entitydatasource
id
=
"ConfigSMTPDataSource"
runat
=
"server"
connectionstring
=
"name=MyEntities"
defaultcontainername
=
"MyEntities"
enabledelete
=
"True"
enableflattening
=
"False"
enableinsert
=
"True"
enableupdate
=
"True"
entitysetname
=
"ConfigSMTP"
entitytypefilter
=
"ConfigSMTP"
>
</
asp:entitydatasource
>
</
td
>
</
tr
>
</
table
>
</
asp:content
>
using
System;
using
System.Collections.Generic;
using
System.ComponentModel.DataAnnotations;
using
System.Linq;
using
System.Threading;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
DataAccess.Model;
using
DataAccess.Validation;
using
Proxy.Data;
using
Telerik.Web.UI;
public
partial
class
ControlCenter_ConfigSMTP : System.Web.UI.Page
{
private
int
_currentDefault;
private
readonly
string
_redirect =
"ConfigSMTP.aspx"
;
public
int
CurrentDefault
{
get
{
return
_currentDefault; }
set
{ _currentDefault = value; }
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
}
protected
void
ConfigSMTPGrid_PreRender(
object
sender, EventArgs e)
{
}
protected
void
ConfigSMTPGrid_ItemDataBound(
object
sender, Telerik.Web.UI.GridItemEventArgs e)
{
//alternative to binding in aspx file
if
(e.Item
is
GridEditFormItem && e.Item.IsInEditMode)
{
//UserControl control = e.Item.FindControl(GridEditFormItem.EditFormUserControlID) as UserControl;
//GridDataItem parentItem = (e.Item as GridEditFormItem).ParentItem;
//TextBox box = (TextBox)control.FindControl("TextBox1");
//box.Text = parentItem["Country"].Text;
}
}
protected
void
ConfigSMTPGrid_InsertCommand(
object
sender, GridCommandEventArgs e)
{
//get entity from grid
GridEditableItem editedItem = e.Item
as
GridEditableItem;
ConfigSMTP smtpEdit = editedItem.DataItem
as
ConfigSMTP;
//get edit form control
UserControl userControl = (UserControl)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);
}
protected
void
ConfigSMTPGrid_UpdateCommand(
object
sender, GridCommandEventArgs e)
{
//get entity from grid
GridEditableItem editedItem = e.Item
as
GridEditableItem; //e.Item is ALWAYS NULL.
ConfigSMTP smtpEdit = editedItem.DataItem
as
ConfigSMTP;
//get edit form control
UserControl userControl = (UserControl)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);
//update values
smtpEdit.SMTPServer = (userControl.FindControl(
"SMTPServer"
)
as
TextBox).Text;
smtpEdit.Description = (userControl.FindControl(
"Description"
)
as
TextBox).Text;
smtpEdit.IsDefault = Byte.Parse((userControl.FindControl(
"IsDefault"
)
as
TextBox).Text);
//commit
ConfigSMTPProxy px =
new
ConfigSMTPProxy();
px.Save(smtpEdit);
}
protected
void
ConfigSMTPGrid_DeleteCommand(
object
sender, GridCommandEventArgs e)
{
//get entity from grid
GridEditableItem editedItem = e.Item
as
GridEditableItem;
ConfigSMTP smtpEdit = editedItem.DataItem
as
ConfigSMTP;
//get edit form control
UserControl userControl = (UserControl)e.Item.FindControl(GridEditFormItem.EditFormUserControlID);
}
}
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="EditConfigSMTP.ascx.cs" Inherits="Controls_EditConfigSMTP" %>
<
table
style
=
"width:100%;"
>
<
tr
>
<
td
colspan
=
"2"
>
<
asp:validationsummary
ID
=
"ConfigSMTPValidationSummary"
runat
=
"server"
cssclass
=
"validation"
ShowModelStateErrors
=
"true"
/>
</
td
>
</
tr
>
<!-- SEARCH FORM -->
<
tr
>
<
td
class
=
"fieldLabel"
>SMTP Address<
span
class
=
"required"
>*</
span
></
td
>
<
td
>
<
asp:textbox
id
=
"SMTPServer"
cssclass
=
"input"
clientidmode
=
"Static"
runat
=
"server"
width
=
"400px"
text='<%# DataBinder.Eval(Container, "DataItem.SMTPServer") %>'></
asp:textbox
>
</
td
>
</
tr
>
<
tr
>
<
td
class
=
"fieldLabel"
>Description</
td
>
<
td
>
<
asp:textbox
id
=
"Description"
cssclass
=
"input"
clientidmode
=
"Static"
runat
=
"server"
textmode
=
"MultiLine"
columns
=
"55"
rows
=
"5"
text='<%# DataBinder.Eval(Container, "DataItem.Description") %>'>
</
asp:textbox
>
</
td
>
</
tr
>
<
tr
>
<
td
> </
td
>
<
td
>
<
asp:checkbox
id
=
"IsDefault"
cssclass
=
"input"
text
=
"Set As Default"
runat
=
"server"
/>
</
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
> </
td
>
</
tr
>
<
tr
>
<
td
colspan
=
"2"
class
=
"submit"
>
<
asp:Button
ID
=
"UpdateButton"
Text
=
"Update Record"
runat
=
"server"
CommandName
=
"Update"
Visible='<%# !(DataItem is Telerik.Web.UI.GridInsertionObject) %>'></
asp:Button
>
<
asp:Button
ID
=
"InsertButton"
Text
=
"Add Record"
runat
=
"server"
CommandName
=
"PerformInsert"
Visible='<%# DataItem is Telerik.Web.UI.GridInsertionObject %>'></
asp:Button
>
<
asp:Button
ID
=
"btnCancel"
Text
=
"Cancel"
runat
=
"server"
CausesValidation
=
"False"
CommandName
=
"Cancel"
></
asp:Button
>
</
td
>
</
tr
>
</
table
>
using
System;
using
System.Collections.Generic;
using
System.ComponentModel.DataAnnotations;
using
System.Linq;
using
System.Web;
using
System.Web.UI;
using
System.Web.UI.WebControls;
using
DataAccess.Model;
using
DataAccess.Validation;
using
Proxy.Data;
using
Telerik.Web.UI;
public
partial
class
Controls_EditConfigSMTP : System.Web.UI.UserControl
{
private
object
_dataItem =
null
;
public
object
DataItem
{
get
{
return
this
._dataItem; }
set
{
this
._dataItem = value; }
}
protected
void
Page_Load(
object
sender, EventArgs e)
{
if
(!Page.IsPostBack)
{
if
(
this
.DataItem !=
null
)
{
ConfigSMTP entity = (ConfigSMTP)
this
.DataItem;
if
(entity.IsDefault == 1)
this
.IsDefault.Checked =
true
;
}
}
}
}
<
GroupByExpressions
>
<
telerik:GridGroupByExpression
>
<
SelectFields
>
<
telerik:GridGroupByField
FieldName
=
"GroupName"
/>
</
SelectFields
>
<
GroupByFields
>
<
telerik:GridGroupByField
FieldName
=
"GroupName"
SortOrder
=
"Ascending"
/>
</
GroupByFields
>
</
telerik:GridGroupByExpression
>
<
telerik:GridGroupByExpression
>
<
SelectFields
>
<
telerik:GridGroupByField
FieldName
=
"Date"
FormatString
=
"{0:MMMM yyyy}"
/>
</
SelectFields
>
<
GroupByFields
>
<
telerik:GridGroupByField
FieldName
=
"Date"
SortOrder
=
"Ascending"
/>
</
GroupByFields
>
</
telerik:GridGroupByExpression
>
</
GroupByExpressions
>
<
GroupHeaderTemplate
>
<
asp:Label
ID
=
"lblGroupName"
runat
=
"server"
Text='<%# Eval("GroupName") %>' />
</
GroupHeaderTemplate
>
<
GroupHeaderTemplate
>
<
asp:Label
ID
=
"lblDate"
runat
=
"server"
Text='<%# Eval("Date") %>' />
</
GroupHeaderTemplate
>
<
telerik:RadFilter
ID
=
"RadFilter1"
runat
=
"server"
Culture
=
"fr-FR"
Skin
=
"Metro"
FilterContainerID
=
"RGArchives"
> </
telerik:RadFilter
>
<
asp:CheckBox
ID
=
"cbxRadFilter"
runat
=
"server"
AutoPostBack
=
"True"
Text
=
"Masquer la gestion des filtres"
/>