This is a migrated thread and some comments may be shown as answers.

SharePoint 2010 aspx page not allowing RadGrid Event Handlers

2 Answers 104 Views
Grid
This is a migrated thread and some comments may be shown as answers.
Mark
Top achievements
Rank 1
Mark asked on 09 Dec 2016, 05:52 PM

I have an ASPX page that works fine in a seperate development project.  I am now trying to move the page into a Visual Studio 2015 project that creates a SharePoint 2010 package.  I just want to deploy the page into the site.

When I load the page through the SharePoint 2010 site, I get a Parser Error page saying that the event handler for OnNeedDataSource is not allowed on this page.  If I remove that event, it complains about the first event that it finds.

Any suggestions on what I might be missing in order to get the events firing?

 

The error is:

Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: The event handler 'OnNeedDataSource' is not allowed in this page.

Source Error:

Line 37: <telerik:RadCheckBox ID="RadCheckBoxShowDisabledConnections" runat="server" Text="Show Disabled Connections">

Line 38: </telerik:RadCheckBox>

Line 39: <telerik:RadGrid ID="RadGridConnections" runat="server" Width="100%"

Line 40: AllowFilteringByColumn="True"

Line 41: AllowPaging="True" PageSize="5"
Source File: /Pages/TestPage.aspx    Line: 39


Version Information: Microsoft .NET Framework Version:2.0.50727.8745; ASP.NET Version:2.0.50727.8745 

 

The ASPX page is:

<%@ Assembly Name="PSC.UDCS.SP2010, Version=1.0.0.0, Culture=neutral, PublicKeyToken=21ff67ef5617fb2f" %>
<%@ Register TagPrefix="asp" Namespace="System.Web.UI" Assembly="System.Web" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Assembly="Telerik.Web.UI, Culture=neutral, PublicKeyToken=121fae78165ba3d4" Namespace="Telerik.Web.UI" TagPrefix="telerik" %>

<%@ Page Language="C#"  CodeBehind="UdcsTestPage.aspx.cs" Inherits="PSC.UDCS.SP2010.UdcsTestPage" MasterPageFile="~/_catalogs/masterpage/default.master"  %>
<asp:Content ID="PageHead" ContentPlaceHolderID="PlaceHolderAdditionalPageHead" runat="server">
</asp:Content>

<asp:Content ID="PageTitle" ContentPlaceHolderID="PlaceHolderPageTitle" runat="server">
    UDCS-Connections
</asp:Content>

<asp:Content ID="PageTitleInTitleArea" ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server">
    Unmanned Device Connection Service - Connections
</asp:Content>

<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
                <telerik:RadScriptManager ID="RadScriptManager1" runat="server"> </telerik:RadScriptManager>
    <h2>Unmanned Device Connections - Connection Setup</h2>
    <asp:Label runat="server" ID="CompileTime"></asp:Label>
                <asp:Label runat="server" ID="Label1"></asp:Label>
                <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server">
                    <AjaxSettings>
                        <telerik:AjaxSetting AjaxControlID="RadGrid1">
                            <UpdatedControls>
                                <telerik:AjaxUpdatedControl ControlID="RadGridConnections" LoadingPanelID="RadAjaxLoadingPanel1" />
                            </UpdatedControls>
                        </telerik:AjaxSetting>
                    </AjaxSettings>
                </telerik:RadAjaxManager>
                <telerik:RadCheckBox ID="RadCheckBoxShowDisabledConnections" runat="server" Text="Show Disabled Connections">
                </telerik:RadCheckBox>
                    <telerik:RadGrid ID="RadGridConnections" runat="server" Width="100%"
                        AllowFilteringByColumn="True"
                        AllowPaging="True" PageSize="5"
                        AllowSorting="True"
                        AllowAutomaticUpdates="True"
                        AllowAutomaticDeletes="true"
                                    RenderMode="Lightweight"
                        OnNeedDataSource="RadGridConnections_OnNeedDataSource"
                        OnItemDataBound="RadGridConnections_OnItemDataBound"
                        OnDeleteCommand="RadGridConnections_OnDeleteCommand"
                        OnUpdateCommand="RadGridConnections_OnUpdateCommand"
                        OnInsertCommand="RadGridConnections_OnInsertCommand"
                        OnItemCommand="RadGridConnections_OnItemCommand"
                        >
                        <GroupingSettings CaseSensitive="false" />
                        <PagerStyle Mode="NextPrevAndNumeric" />
                        <MasterTableView CommandItemDisplay="TopAndBottom" Width="100%" DataKeyNames="ID, Station,Device,TemplateName" AutoGenerateColumns="False" >
                            <Columns>
                                <telerik:GridButtonColumn CommandName="Edit" Text="Edit" UniqueName="Edit" />
                                <telerik:GridButtonColumn ConfirmText="Disable this connection?" ConfirmDialogType="RadWindow" ConfirmTitle="Disable" CommandName="Delete" />
                                                                <telerik:GridBoundColumn UniqueName="ID" DataField="ID" Display="False" />
                                <telerik:GridBoundColumn UniqueName="DeviceId" DataField="DeviceId" Display="False" />
                                <telerik:GridBoundColumn UniqueName="Station" HeaderText="Station" DataField="Station" />
                                <telerik:GridBoundColumn UniqueName="Device" HeaderText="Device" DataField="Device" />
                                <telerik:GridBoundColumn UniqueName="TemplateName" HeaderText="TemplateName" DataField="TemplateName" />
                                <telerik:GridBoundColumn UniqueName="ApplicationPort" HeaderText="ApplicationPort" DataField="ApplicationPort" />
                                <telerik:GridBoundColumn UniqueName="UseMultiHomed" HeaderText="UseMultiHomed" DataField="UseMultiHomed" />
                                <telerik:GridBoundColumn UniqueName="Application" HeaderText="Application" DataField="Application" />
                                <telerik:GridBoundColumn UniqueName="Access" HeaderText="Access" DataField="Access" />
                                <telerik:GridBoundColumn UniqueName="Connection" HeaderText="Connection" DataField="Connection" />
                                <telerik:GridBoundColumn UniqueName="WhiteListIps" HeaderText="WhiteListIps" DataField="WhiteListIps" />
                            </Columns>
    <EditFormSettings UserControlName="UdcsConnectionEdit.ascx" EditFormType="WebUserControl">
      <EditColumn UniqueName="EditCommandColumn1">
      </EditColumn>
    </EditFormSettings>                        </MasterTableView>
                    </telerik:RadGrid>
</asp:Content>

2 Answers, 1 is accepted

Sort by
0
Mark
Top achievements
Rank 1
answered on 09 Dec 2016, 09:45 PM

Okay, well to answer my own question (I swear that I Googled this for quite a while!)

Acording to a TechNet post:

"Changing the parameter "AllowServerSideScript" to true is not recommended on a SharePoint environment. It's considered as a security fail : as end-user can upload aspx page on document library, server side script on page can be dangerous.
Instead of this, you have two solutions :
Add your handlers on code behind (on page_load). This can be very fastidious because of page life-cycle
Create a user control (user controls allow server side script on them), put all the content of your page in it (and all the associated code behind) and add your user control to your page."

So, I changed my c# code behind to set up the events in the code behind, and that issue went away.

0
Marin
Telerik team
answered on 14 Dec 2016, 02:09 PM
Hello,

Indeed the Sharepoint's default configuration does not allow such easy deploy of .aspx page and its related code-behind due to security issues related to the complied code behind file especially when the event handler in a .aspx file is located and compiled in a separate assembly.
One way to resolve the issue is the way you're using: to register all event handlers in the code behind as well. The other option is to register the precomplied assembly containing the code behind as SafeControl in the web.config file.
Additional information can also be found in the following links:
https://blogs.msdn.microsoft.com/kaevans/2010/06/28/creating-a-sharepoint-site-page-with-code-behind-using-visual-studio-2010/
https://blogs.msdn.microsoft.com/kaevans/2011/04/02/code-behind-page-layouts-with-visual-studio-2010/

Regards,
Marin
Telerik by Progress
Try our brand new, jQuery-free Angular 2 components built from ground-up which deliver the business app essential building blocks - a grid component, data visualization (charts) and form elements.
Tags
Grid
Asked by
Mark
Top achievements
Rank 1
Answers by
Mark
Top achievements
Rank 1
Marin
Telerik team
Share this question
or